Coding Agents
Coding agents are the core feature of LeapMux. Each agent is a real coding-assistant CLI (Claude Code, Codex, and others) running on a Worker, wrapped in a chat tab so you can talk to it, watch its tool calls, and approve its actions. This chapter covers which agents are supported and how to open, chat with, and configure one.
For where agents live in the workspace layout, see Tabs & Layout. For the git side of opening an agent in a branch or worktree, see Worktrees & Branches. To drive agents from a script instead of the browser, see Control CLI.
Choosing a provider
LeapMux integrates 30 coding-agent providers. It detects the installed coding agents on the Worker and lists them in the New agent dialog.
LeapMux turns off the self-update of each agent CLI that offers a switch for it in the environment, so an update does not replace a CLI while a session uses it. Update a CLI with its own installer or package manager between sessions.
All 30 providers support chat and streamed tool calls. The feature matrix shows approval requests and native model context on resume. The Goals & To-dos sidebar appears when an agent has a to-do list or a session goal. Each provider offers its own models and settings, and its prompt style varies too.
Opening a new agent
Open the New agent dialog from the workspace, then fill in the fields below and click Create.
Dialog fields
| Field | What it does |
|---|---|
| Worker | The machine that will run the agent. Determines which providers are available and where the working directory lives. See Managing Workers. |
| Agent Provider | Which agent CLI to launch. Shows the provider icon, label, and a chevron; a check marks the current choice. |
| Directory | The working directory for the agent, chosen from a directory tree on the Worker. A text box above the tree shows the selected path; type a path and press Enter to go there. It is the same picker the New Terminal dialog uses โ see Working Directory for the full behavior, including the path-style hint for a Windows Worker. |
| Resume an existing session | Optional. A menu of recent sessions for the selected directory and provider, with a filter box, a refresh button, and an Enter a session IDโฆ row for a handle the list does not hold. Leave it on Start a new session to begin fresh (see Resuming a session). |
| Title | The tab name. Pre-filled with a random Agent <Name>; the refresh button beside the label picks another. Type your own to replace it. It cannot be empty. |
| Git options | Appears once a Worker is selected. Lets you start the agent on the current branch, switch branches, create a branch, or create/use a worktree. See Worktrees & Branches. |
The dialog has no model, effort, or permission-mode fields. A new session takes the models and effort that your provider configuration states, and starts with a permission mode that asks before risky actions.
A resumed session keeps its stored settings. Change settings from the composer after the session starts (see Changing settings mid-session).
LeapMux remembers your most recently used provider and pre-selects it (when it is available on the chosen Worker), so you usually only have to pick a directory and click Create.
Quick-open (no dialog)
If you trigger “new agent” from a tab that already has a Worker and working directory, LeapMux skips the dialog and opens an agent directly, reusing the active tab’s provider (or your most-recent provider). It only falls back to the full dialog when the Worker, directory, or provider can’t be inferred.
Where the new agent lands
The Worker assigns a friendly title from a shared name pool (you’ll see titles like “Agent
Resuming an existing session
To reopen a native session, pick it from the Resume an existing session field in the New agent dialog. The field lists recent sessions for the selected provider. It filters by directory when the native store records one. Each entry shows a title and age. A filter box narrows the list, and the refresh button asks the Worker again.
The list combines LeapMux’s agent records with each CLI’s session history on that machine. A session you started in a terminal can appear here too. Where both stores know a session, LeapMux’s record wins.
A session already open in a tab isn’t offered, because a second process against one native session store can corrupt it โ close the tab first. Providers that record a session’s directory also exclude sessions from another directory; some native stores record no directory and cannot apply that filter. Changing the directory or provider clears a session you had picked, since a session ID means nothing in another directory.
Leave the field on Start a new session to begin fresh. It is a real entry in the menu, so it is also how you take back a session you picked.
The last entry, Enter a session IDโฆ, swaps the menu for a text box. Use it for a session from another machine, or one older than the newest fifty. The field also falls back to that box on its own when the Worker finds no sessions at all โ a directory with no history, a provider whose store this machine doesn’t have, or a Worker that can’t answer. The box checks what you type and reports a session ID it cannot use.
Once you submit, the Worker asks the provider to reopen the native session. The new tab shows the chat rows an earlier LeapMux tab saved on this Worker; an external native session can resume without them, because its provider replays its own history. Whether the provider restores prior model context states the matrix.
If native resume fails, the agent doesn’t start and the tab reports why. Send /clear in the chat to start a fresh session instead.
Automatic resume
Most resumption happens automatically: the tab and its Worker transcript survive a Hub restart, a Worker restart, and a client reconnect. When LeapMux has to respawn an agent’s process, it reconnects it to the prior session through the provider’s own resume mechanism โ whether that restores the provider’s prior model context states the matrix. If native resume fails, LeapMux reports the failure and keeps the transcript, so an empty session never replaces the conversation.
Chatting with an agent
The chat tab has the conversation transcript above and a Markdown editor at the bottom.
Composing and sending
The editor is a full Markdown editor in a single input box. Type your message and send it with the Send button (the paper-plane icon) or with the keyboard. While the message is in flight, a spinner replaces the Send icon.
The box starts one line tall, with the [+] menu at the left end and the send controls at the right. It expands into a taller layout, with those controls on their own row beneath the text, as soon as the message needs more than one line.
Send is disabled when the editor is empty and there are no attachments.
Markdown shortcuts apply as you type: **bold**, `code`, # heading, - list, ``` for a code block, and [text](url) for a link. Click a link to open a small editor for its URL, with Save and a remove button. Use it whenever a URL is wrong โ editing the link’s visible text does not change where it points.
Enter-key send mode
An item in the composer’s [+] menu controls what the Enter key does. The two modes are:
| Mode | Enter | Modifier+Enter |
|---|---|---|
| Enter sends | Sends the message | (Shift+Enter for a new line) |
| Cmd/Ctrl+Enter sends (default) | Inserts a new line | Cmd+Enter (macOS) / Ctrl+Enter (other platforms) sends |
The default is Cmd/Ctrl+Enter sends, so plain Enter adds a newline. Open the [+] menu and click Send with Cmd/Ctrl+Enter to switch; the choice is saved as a preference and persists across sessions.
Attachments
You can attach files with [+] > Attach file…, or by pasting or dropping them into the editor. Pending attachments appear in a strip above the editor. What you can attach depends on the provider. See the feature matrix.
ZCode accepts an image only when the selected model declares image input. LeapMux refuses an image on a text-only model and identifies that model. Without this check, ZCode accepts the image but does not send it to the model.
Message persistence and offline behavior
Your messages appear immediately (optimistically) and are reconciled when the server echoes them back. If you send while the agent subprocess is still starting, the message is queued and delivered once the agent is ready. Optimistic messages survive a page refresh; if delivery fails, you can retry or delete the message. Everything you send passes through the input queue, which is what makes that durable.
Interrupting a turn
While the agent is actively working โ and there is no pending permission prompt โ an Interrupt button (a square icon) appears. Click it to stop the current turn. LeapMux asks the agent to stop via its native interrupt mechanism rather than killing the process.
The input queue
Everything you send an agent goes into its input queue first: a message, an
attachment, a /clear, a plan execution, an answer to a permission prompt. The
queue lives on the Worker, so it survives a page refresh, a reconnect, and a
Worker restart, and every device you are signed in on sees the same one.
An item leaves the queue when the agent takes it. While the agent works, anything you send waits its turn, and the queue appears above the composer with one row per waiting item. Each row shows a preview, what kind of input it is, its delivery state, and โ for a scheduled item โ the local date and time it waits for.
Working with queued items
| Control | What it does |
|---|---|
| Move up / Move down | Reorder a waiting item inside its reorder group. Drag a row by its grip for the same effect. |
| Edit | Load the item back into the composer to change it. Another device editing it shows Take Over instead. |
| Delete | Drop the item. Click twice to confirm. |
| Retry | Send an item again after a delivery failure. |
| Steer | Hand the first item to the turn already running, instead of waiting for it to finish. |
| Pause Queue | Stop delivering. The Send button reads Queue while paused. |
An item already on its way to the agent cannot be moved, reordered around, or deleted.
Scheduling a send
The calendar button beside Send schedules the composer’s next message: pick a local date and time, and the message waits in the queue until then instead of going out with the next delivery. Clearing the schedule returns the message to immediate delivery, and an edit of a queued item can change or clear its schedule the same way.
Immediate and scheduled input share one queue with one rule: immediate items always go ahead of scheduled ones, and scheduled items run in the order of their times. A row can only be reordered inside its own group โ an immediate item never swaps with a scheduled one, and two scheduled items swap only when they wait for the exact same instant. A deadline that passes while you watch simply promotes its row to the immediate group; nothing is re-sent or lost. The promoted row still waits behind an item that is on its way to the agent, and behind one whose delivery failed or is uncertain.
Providers use the same mechanism for their own automatic retries. When Claude Code or Codex hits a usage limit that lifts at a known time, or a turn fails with a retryable server error, the queue gains an Auto-retry (usage limit) or Auto-retry (server error) row that shows the time it waits for. The row is visible, reorderable within its group, and cancellable like any other item. Pausing the queue holds a matured retry exactly as it holds anything else; resuming delivers it.
Pausing
The queue pauses itself when something goes wrong โ a delivery fails, delivery is uncertain, or the agent stopped โ and a banner above the composer says which. Pause it yourself with Pause Queue to stack up several messages before letting the agent have them. Resume starts delivery again. A pause holds scheduled input too: an item whose time arrives while the queue is paused waits โ visible with its state โ until you resume.
Steering
Steering hands the queue’s first item to the turn the agent is already running, rather than letting it wait. It is how you correct an agent mid-thought: queue “use the existing helper instead”, steer it, and the agent takes it into the work in progress.
Press Cmd/Ctrl+Enter while the composer is empty, or click Steer on the
first row. The shortcut and the button offer the same thing under the same
conditions, and nothing happens when any of them is unmet:
- the agent’s provider has to accept a steer while it runs;
- a turn has to be in progress, and it has to be an ordinary turn rather than a
/clearor a/compact; - the first item has to be waiting โ not on its way to the agent, and not open for edit.
The shortcut acts only on an empty composer, because Cmd/Ctrl+Enter sends
whatever the composer holds. Text, an attachment, or a permission prompt waiting
for approval all count as something to send, so in each of those cases the chord
sends as usual.
How tool calls and results render
As an agent works, the transcript shows its assistant text, its thinking (where the provider exposes it), and a row for every tool call it makes, followed by that tool’s result. The exact set of tools depends on the provider, but you will commonly see:
- File reads โ the file the agent opened.
- Edits and writes โ rendered with a diff. The result toolbar offers a split / unified diff toggle.
- Bash / command execution โ the command and its output.
- Search / grep / glob โ the query and matches.
- Web fetch / web search โ the URL or query and what came back.
- Todo / plan updates โ feed a persistent todo sidebar (see below).
- MCP tool calls โ calls into Model Context Protocol servers the agent has access to, rendered like any other tool call.
Long tool results are collapsible (an Expand button), and most rows have a Copy button. Where it makes sense, a row’s header also offers a Quote button (tooltip “Quote”, pulls the row’s text into the editor as a quoted reply), a Copy Markdown button (tooltip “Copy Markdown”), and a Copy Raw JSON button for debugging. The permission-prompt banner (see Permission and approval prompts) carries its own Copy Raw JSON action too.
Images in tool results
When a tool returns an image โ a screenshot from an MCP browser tool, a Read on a PNG, a generated picture โ the row shows the picture itself, scaled to fit the transcript.
Click one to open it in its own tab, where you can zoom it (fit, 100%, or any step in between) and pan. When the agent said which file the image came from, LeapMux opens that file instead, so you see it at full resolution straight from the Worker.
Not every image renders inline:
- Images above about 5 MB show a placeholder instead of the picture.
- An image the agent gives by URL shows an open โ link instead of the picture. Rendering it would fetch from that host, which the transcript never does on its own.
What a tool result can carry depends on the provider โ see the feature matrix. A few providers are worth calling out:
- ZCode’s app server turns an image part into a placeholder string before it reaches LeapMux, so LeapMux instead recovers the image from ZCode’s stored attachment records.
- Codewhale publishes immutable native image records; LeapMux stores verified image bytes beside the native tool event.
- Cline supplies text-only tool results.
- Amp can display an image from a file that
Readopens; its MCP results supply text only. - Muse Code hands an image’s bytes to the next model request, but its tool result states the file and media type as text alone.
The Goals & To-dos sidebar
This section holds two things an agent works toward: its session goal, and its to-do list.
The session goal is a standing objective. The agent re-tests it at the end of every turn and keeps working while the condition does not hold. The card shows the objective, its status, and the counters the CLI reports; the feature matrix states which providers report one and which controls each offers.
Set a goal from the card, and use the card’s menu to change, pause, resume, or clear it where the provider supports that. A few providers differ in how a change travels: Claude Code, Goose, Kilo, and Grok Build take it as a message, which enters the agent’s input queue and costs a turn (Grok Build runs a whole goal inside one turn, so its goal messages are sent to the agent at once rather than through the queue). Qwen Code receives goal changes through its goal control โ a change takes effect at once, even while a goal round runs. Oh My Pi only displays its goal; start or change it from Oh My Pi itself.
The to-do list shows each item’s status (pending, in progress, completed). Whatever to-do or plan tracking the provider’s own tools report feeds it. The list is server-authoritative, so it stays correct across reconnects.
A chip on the thinking indicator shows the to-do count and opens the same section as a popover.
Subagents and the Background tasks sidebar
When an agent spawns a subagent (a Task or Agent tool) or runs a background shell it reports, LeapMux tracks it in a Background tasks sidebar section. Each row shows the task’s live status and, for subagents that own a transcript, is clickable to open the subagent in its own tab alongside its parent. A small chip on the thinking indicator shows the active count and opens the same list as a popover. A dynamic workflow that runs many subagents for one job groups them under the workflow’s row.
Closing a subagent tab closes only the tab. The transcript and registry survive, and you can reopen the tab from the section later. Only providers whose CLIs report subagent activity appear here; the registry lives in the Worker’s local database and never reaches the Hub.
Turn boundaries and notifications
The end of each turn is marked by a divider that may carry a label such as a duration (“Took 2.1s”) or an error (“API Error: 529 โฆ”). LeapMux also surfaces notifications for events like rate limits, context compaction, retries, and settings changes, collapsing repeated or no-op notifications so they don’t flood the transcript.
Permission and approval prompts
When an agent needs your approval โ to run a command, edit a file, or proceed with a plan โ or wants to ask you a question, LeapMux shows a control request banner directly above the editor. Every banner has the same shape: a title stating the request, a body explaining the action (often as collapsible JSON), one button for each answer the provider offers, and the editor for a custom answer. The editor placeholder changes to hint at what to type โ “Type a custom answer…” for a question, “Type a rejection reason…” for any other request.
The provider’s protocol supplies the buttons and labels. Most providers ask about one call at a time. Some offer approval for the rest of the session. Others offer a rule that the CLI remembers. Check each button’s scope before you allow a call. Text that you submit with a denial reaches the agent as its rejection reason.
The banner shows a Permissions choice when the provider supplies permission shortcuts. See Changing settings mid-session. It offers Unchanged, Smart, or Bypass (only the shortcuts the session supports appear). An approval applies the selected shortcut to the session as well; the initial choice matches the session’s current shortcut, and a plan-approval banner starts with Smart when the provider offers it.
Questions
A question uses radio buttons for a single answer or checkboxes for several; you can also type a custom answer. A prompt with several questions shows Question N of M, and one submission answers all of them. Requested MCP input is collected through a form or the provider’s native questions (see the feature matrix).
Plan approvals
When an agent finishes planning, the banner shows the plan. Approve starts the work. Reject keeps plan mode and sends your feedback. Clear Context starts the work in a fresh session when the provider offers that choice. Some providers end plan mode without asking (see the feature matrix).
If several prompts queue up, you answer them one at a time. LeapMux de-duplicates requests and remembers answered ones, so a reconnect never re-asks something you already handled.
The exact buttons and their names come from the provider’s own protocol.
Changing settings mid-session
Beneath the editor box is a status bar with one chip per setting axis โ the git branch, and the agent’s current model, reasoning effort, and mode. Click a chip to change that axis.
The [+] menu holds every axis, including provider-specific options that have no chip. Each axis has a submenu. The menu also holds Agent info for context usage, rate limits, and the session.
LeapMux exposes the native settings its provider adapter supports โ model, reasoning effort, mode, permissions, and other provider-specific axes โ with the values the CLI’s own configuration offers. You pick these as named radio options in the interface; when driving an agent with leapmux control agent set, --permission-mode sets the permission axis and --option any other one.
You can hide the status bar with [+] > Show status bar. The [+] menu still gives access to all status bar settings.
A picker shows radio items for up to 7 options and switches to a searchable list above that.
Permission shortcuts
Providers can add two adjacent permission shortcuts. Smart permissions selects the provider’s safety-assisted mode. Bypass permissions disables permission prompts. Smart permissions is always directly above Bypass permissions. A shortcut appears only when the session offers every setting and value that the preset needs.
Each safety-assisted mode approves the calls that it judges safe. The provider’s mode decides what happens to the other calls: it asks you, or it denies the call.
For Codex, Smart permissions selects Approve for me, Codex’s auto-review mode. A reviewer agent decides each approval request. The transcript shows its decision and reason.
A denied action has an Approve button. This records your authorization for the specified action in its original context. It does not run the action or enforce a one-use execution limit.
After approval, the row shows Approved, including after a reload. Codex accepts this approval only in the main agent. A subagent’s denied row has no approval button.
Bypass is a deliberate choice that stays set: it stops the agent from asking for approval. Use it only when you trust the working directory and the task. For Codex, Bypass also approves the requests of work that started before the switch. A turn that is running keeps the approval policy that it started with, so Codex still sends those requests. The transcript states how many waiting requests Bypass approved.
Reasoning effort and the “Auto” default
For the providers whose effort LeapMux manages, effort defaults to Auto, meaning “let the CLI pick.” When effort is Auto, LeapMux omits the effort flag entirely, so older CLI versions that don’t recognize newer effort names still work. You only need to set effort explicitly if you want to force a particular tier.
Plan mode shortcut
For providers that support a plan mode, Shift+Tab in the editor toggles between plan mode and the previous mode. Which providers those are states the feature matrix.
Driving agents from a script
Everything in this chapter has a programmatic counterpart in the leapmux control CLI, which agents themselves can call (the Worker injects credentials into each spawned agent’s environment). The most relevant commands:
# Send a message to an agent tab
leapmux control agent send --tab-id <id> --message "Refactor the auth module"
# Interrupt the current turn
leapmux control agent interrupt --tab-id <id> --reason "wrong file"
# Change model / effort / permission mode mid-session
leapmux control agent set --tab-id <id> --model gpt-5.4 --effort high
# Open a new agent in a tab (provider, model, working dir, worktree, etc.)
leapmux control tab open --type agent --worker-id <id> --provider "Claude Code" \
--working-dir /repo --initial-message "Start on the bug fix"
# Answer a Claude-Code-style control request
leapmux control agent send-control-response --tab-id <id> --content '<raw JSON>'See Control CLI for the full command tree, entity-ID resolution, and the JSON output contract.
Feature matrix
Every provider supports chat and streamed tool calls. Each matrix cell shows one of three states. The legend above the first table explains each symbol. The page splits the agents over several tables, and each table lists the features in groups. The first group header of a table shows no logos, because the table head shows them. Each later group header repeats the logos. Select a feature label for its exact definition. A โ link beside a symbol opens a short note about that cell.
- Supported
- The agent does not offer it
- LeapMux does not support it yet
| Feature | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Attachments | ||||||||||
| Text attachments | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
| Image attachments | โ | โ | โ | โ | โ | โ | โ | โ | โ โ | โ โ |
| PDF attachments | โ | ๐ซโ | ๐ซโ | โ โ | โ | โ | ๐ซโ | ๐ซโ | โ โ | โ โ |
| Audio attachments | ๐ซโ | โ โ | ๐ซโ | ๐ซโ | โ โ | โ โ | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ |
| Other binary attachments | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ | โ โ | ๐ซโ |
| Conversation | ||||||||||
| Thinking in the transcript | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
| Steer mid-turn | โ | โ | ๐ซโ | โ | โ | โ | โ โ | โ | โ | โ โ |
| Agent questions | โ | โ โ | โ โ | โ โ | โ | โ | ๐ซโ | โ | โ โ | โ |
| Context | ||||||||||
| Context usage | โ | โ | ๐ซโ | โ | โ | โ | โ | โ | โ | โ |
| Compaction notice | โ | โ | ๐ซโ | โ | โ | โ | โ โ | โ | โ | โ |
| Manual compaction | โ | โ โ | ๐ซโ | โ โ | โ | โ | โ | โ | ๐ซโ | โ |
| Model context on resume | โ | โ | โ โ | โ | โ | โ | โ | โ | โ | โ |
| Rate-limit state | โ โ | โ | ๐ซโ | โ โ | โ โ | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ |
| Models and settings | ||||||||||
| Model | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
| Reasoning effort | โ โ | โ | โ โ | โ โ | โ | โ | โ | โ | โ | โ โ |
| Mode | โ | โ | โ | โ | โ | โ | โ | ๐ซโ | โ | โ โ |
| Permissions | ||||||||||
| Permission prompts | โ | โ โ | โ | โ โ | โ | โ | โ | ๐ซโ | โ | โ โ |
| Smart permissions shortcut | โ | โ โ | ๐ซโ | โ โ | ๐ซโ | ๐ซโ | โ | ๐ซโ | โ โ | ๐ซโ |
| Bypass permissions shortcut | โ | โ โ | โ โ | โ | โ โ | โ โ | โ | ๐ซโ | โ โ | โ |
| Planning and goals | ||||||||||
| Plan mode | โ | โ | โ | โ | โ | โ | ๐ซโ | โ | โ | โ |
| Plan approval banner | โ | โ | โ | โ | ๐ซโ | ๐ซโ | ๐ซโ | โ | โ | โ |
| Session goal: set and clear | โ โ | โ | ๐ซโ | โ | โ โ | ๐ซโ | โ โ | โ | โ | โ |
| Session goal: pause and resume | ๐ซโ | โ | ๐ซโ | โ | โ โ | ๐ซโ | ๐ซโ | โ | โ โ | โ |
| To-do sidebar | โ | โ โ | โ | โ | โ | โ | โ | โ | โ | โ |
| Background tasks sidebar | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
| Tools | ||||||||||
| MCP tool execution | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
| MCP input request | โ | โ | ๐ซโ | โ | ๐ซโ | ๐ซโ | โ | ๐ซโ | โ | โ โ |
| Code execution | โ โ | โ โ | ๐ซโ | ๐ซโ | โ โ | โ โ | โ โ | โ โ | โ โ | โ โ |
| Output file paths | โ โ | ๐ซโ | ๐ซโ | โ โ | โ โ | โ โ | โ | โ โ | โ โ | โ โ |
| Images in tool results | โ | โ | โ | โ | โ | โ | โ | โ | โ โ | โ โ |
| Subagents | ||||||||||
| Subagent transcript tab | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
| Subagent live transcript | โ | โ | โ โ | โ | โ โ | โ โ | โ โ | ๐ซโ | ๐ซโ | โ โ |
| Send to a subagent | ๐ซโ | ๐ซโ | ๐ซโ | โ โ | โ โ | โ โ | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ |
| Interrupt a subagent | โ โ | โ | ๐ซโ | โ โ | โ โ | โ โ | ๐ซโ | ๐ซโ | ๐ซโ | โ โ |
| Workflow grouping | โ โ | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ | โ โ |
| Feature | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Attachments | ||||||||||
| Text attachments | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
| Image attachments | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
| PDF attachments | ๐ซโ | ๐ซโ | โ | โ | ๐ซโ | โ | โ | ๐ซโ | ๐ซโ | โ |
| Audio attachments | ๐ซโ | ๐ซโ | โ โ | โ โ | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ | โ โ |
| Other binary attachments | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ | โ | โ โ | ๐ซโ | ๐ซโ | โ |
| Conversation | ||||||||||
| Thinking in the transcript | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
| Steer mid-turn | โ | โ | โ | โ โ | โ | โ | โ | โ โ | โ | โ โ |
| Agent questions | โ | โ | โ | โ | โ | โ | โ | ๐ซโ | โ โ | โ โ |
| Context | ||||||||||
| Context usage | โ โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
| Compaction notice | โ โ | โ | โ โ | โ | โ | โ | โ | ๐ซโ | โ | ๐ซโ |
| Manual compaction | โ | โ | โ | โ | โ | โ | โ | ๐ซโ | ๐ซโ | โ โ |
| Model context on resume | โ | โ | โ | โ | โ | โ | โ | โ | โ โ | โ |
| Rate-limit state | ๐ซโ | โ โ | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ | โ โ | ๐ซโ | ๐ซโ | ๐ซโ |
| Models and settings | ||||||||||
| Model | โ | โ | โ | โ | โ | โ | โ | ๐ซโ | โ | โ |
| Reasoning effort | โ | โ | โ | โ | โ | โ | โ โ | ๐ซโ | โ โ | โ |
| Mode | โ | โ | โ | โ | โ | โ | โ | โ โ | โ | โ โ |
| Permissions | ||||||||||
| Permission prompts | โ โ | โ | โ | โ | โ | โ | โ โ | โ โ | โ | โ |
| Smart permissions shortcut | โ | โ | ๐ซโ | โ โ | ๐ซโ | โ | ๐ซโ | ๐ซโ | ๐ซโ | โ โ |
| Bypass permissions shortcut | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
| Planning and goals | ||||||||||
| Plan mode | โ | โ | โ | โ | ๐ซโ | โ | โ | ๐ซโ | โ | โ |
| Plan approval banner | ๐ซโ | โ | โ | โ | ๐ซโ | โ | ๐ซโ | ๐ซโ | โ โ | โ |
| Session goal: set and clear | โ | โ โ | โ | โ โ | โ | โ โ | โ โ | ๐ซโ | ๐ซโ | ๐ซโ |
| Session goal: pause and resume | ๐ซโ | โ โ | ๐ซโ | โ โ | โ | โ โ | โ โ | ๐ซโ | ๐ซโ | ๐ซโ |
| To-do sidebar | โ | โ | โ | โ | โ | โ | โ | ๐ซโ | ๐ซโ | โ |
| Background tasks sidebar | โ | โ | โ | โ | โ | โ | โ | โ | โ โ | โ |
| Tools | ||||||||||
| MCP tool execution | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
| MCP input request | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ | โ | โ | ๐ซโ | ๐ซโ | ๐ซโ |
| Code execution | โ โ | ๐ซโ | โ โ | โ โ | โ โ | โ โ | ๐ซโ | โ โ | ๐ซโ | โ โ |
| Output file paths | โ โ | โ โ | โ โ | โ โ | ๐ซโ | โ โ | โ โ | ๐ซโ | ๐ซโ | โ โ |
| Images in tool results | โ โ | โ | โ | ๐ซโ | โ | โ | โ | โ โ | โ โ | ๐ซโ |
| Subagents | ||||||||||
| Subagent transcript tab | โ | โ | โ | โ | โ | โ | โ | ๐ซโ | โ | โ |
| Subagent live transcript | โ โ | โ | โ | โ โ | โ | โ | โ | ๐ซโ | โ โ | โ |
| Send to a subagent | ๐ซโ | โ โ | โ โ | ๐ซโ | โ | โ โ | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ |
| Interrupt a subagent | ๐ซโ | โ | ๐ซโ | โ | โ | โ | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ |
| Workflow grouping | ๐ซโ | โ | โ | โ โ | ๐ซโ | โ | โ | ๐ซโ | โ | โ |
| Feature | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Attachments | ||||||||||
| Text attachments | โ | โ | โ | โ | โ | โ | โ โ | โ โ | โ โ | โ |
| Image attachments | โ | โ | โ | โ | โ | โ | โ โ | โ โ | โ โ | โ |
| PDF attachments | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ | โ โ | โ โ | ๐ซโ | โ โ | โ โ | ๐ซโ |
| Audio attachments | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ | โ โ | ๐ซโ | ๐ซโ | โ โ | ๐ซโ |
| Other binary attachments | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ | โ โ | โ โ | ๐ซโ |
| Conversation | ||||||||||
| Thinking in the transcript | ๐ซโ | โ | โ | โ | โ | โ | โ โ | โ โ | โ โ | โ |
| Steer mid-turn | โ | ๐ซโ | โ | โ | โ | ๐ซโ | โ โ | โ โ | ๐ซโ | โ |
| Agent questions | โ โ | โ โ | โ โ | โ | โ | ๐ซโ | ๐ซโ | โ โ | ๐ซโ | โ |
| Context | ||||||||||
| Context usage | โ | โ | โ | โ โ | โ | โ | โ โ | โ โ | โ โ | โ โ |
| Compaction notice | ๐ซโ | โ | โ โ | โ โ | โ | ๐ซโ | โ โ | โ โ | ๐ซโ | โ โ |
| Manual compaction | ๐ซโ | โ โ | โ โ | โ โ | โ | ๐ซโ | โ โ | โ โ | ๐ซโ | โ โ |
| Model context on resume | โ | โ | โ โ | โ | โ | โ | โ โ | โ โ | โ โ | โ |
| Rate-limit state | ๐ซโ | โ โ | ๐ซโ | โ โ | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ | โ โ |
| Models and settings | ||||||||||
| Model | โ | โ | โ | โ | โ | ๐ซโ | โ โ | โ โ | โ โ | โ โ |
| Reasoning effort | โ | โ โ | โ | โ | โ โ | ๐ซโ | โ โ | โ โ | ๐ซโ | โ |
| Mode | โ | โ โ | โ | โ | โ โ | โ โ | โ โ | โ โ | โ โ | โ |
| Permissions | ||||||||||
| Permission prompts | โ | โ | โ | โ โ | โ | โ โ | ๐ซโ | โ โ | โ โ | โ |
| Smart permissions shortcut | โ โ | ๐ซโ | ๐ซโ | โ | โ โ | ๐ซโ | ๐ซโ | โ โ | ๐ซโ | ๐ซโ |
| Bypass permissions shortcut | โ โ | โ | โ | โ โ | โ โ | โ โ | โ โ | โ โ | โ โ | โ |
| Planning and goals | ||||||||||
| Plan mode | โ โ | ๐ซโ | โ | โ | โ โ | ๐ซโ | โ โ | โ โ | โ โ | ๐ซโ |
| Plan approval banner | โ โ | ๐ซโ | ๐ซโ | โ | โ โ | ๐ซโ | ๐ซโ | โ โ | โ โ | ๐ซโ |
| Session goal: set and clear | ๐ซโ | ๐ซโ | ๐ซโ | โ | ๐ซโ | ๐ซโ | ๐ซโ | โ โ | ๐ซโ | โ โ |
| Session goal: pause and resume | ๐ซโ | ๐ซโ | ๐ซโ | โ | ๐ซโ | ๐ซโ | ๐ซโ | โ โ | ๐ซโ | โ โ |
| To-do sidebar | โ โ | โ | โ โ | โ | โ | ๐ซโ | โ โ | โ โ | โ โ | โ |
| Background tasks sidebar | โ โ | โ | โ | โ | โ | โ | โ โ | โ โ | โ โ | โ โ |
| Tools | ||||||||||
| MCP tool execution | โ | โ โ | ๐ซโ | โ | โ | โ | โ โ | โ โ | โ โ | โ |
| MCP input request | ๐ซโ | ๐ซโ | ๐ซโ | โ | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ |
| Code execution | ๐ซโ | โ โ | โ โ | โ โ | โ โ | ๐ซโ | โ โ | โ โ | ๐ซโ | โ โ |
| Output file paths | โ โ | โ โ | โ โ | โ โ | โ โ | โ | โ โ | โ โ | ๐ซโ | โ |
| Images in tool results | ๐ซโ | ๐ซโ | ๐ซโ | โ | โ | โ | โ โ | โ โ | โ โ | ๐ซโ |
| Subagents | ||||||||||
| Subagent transcript tab | โ | โ | โ โ | โ | โ | โ โ | โ โ | โ โ | โ โ | โ |
| Subagent live transcript | โ | โ | ๐ซโ | โ | โ | ๐ซโ | โ โ | โ โ | โ โ | โ |
| Send to a subagent | ๐ซโ | ๐ซโ | ๐ซโ | ๐ซโ | โ โ | ๐ซโ | ๐ซโ | โ โ | ๐ซโ | โ โ |
| Interrupt a subagent | ๐ซโ | ๐ซโ | ๐ซโ | โ โ | ๐ซโ | ๐ซโ | ๐ซโ | โ โ | ๐ซโ | โ |
| Workflow grouping | ๐ซโ | ๐ซโ | ๐ซโ | โ โ | ๐ซโ | ๐ซโ | ๐ซโ | โ โ | ๐ซโ | โ โ |
Feature definitions
- Text attachments
- The agent can use the contents of an attached text file. A filename alone does not count.
- Image attachments
- The agent can use the bytes of an attached image through its native input path.
- PDF attachments
- The agent can use the bytes of an attached PDF. A filename or placeholder does not count.
- Audio attachments
- The agent can use an attached audio recording as audio, with its original bytes and media type. A text transcript alone does not count.
- Other binary attachments
- The agent can use the bytes of an attached binary file other than an image, PDF or audio recording. A filename or placeholder does not count.
- Thinking in the transcript
- LeapMux shows reasoning or thinking content from the provider's native output in the chat transcript.
- Steer mid-turn
- New user input reaches the agent's current turn before it ends, instead of waiting in the next-turn queue.
- Agent questions
- LeapMux shows a question from the agent and returns the user's selected or typed answer through the native question path.
- Context usage
- Agent info shows the provider's reported context use as token counts or an occupancy ratio.
- Compaction notice
- The chat transcript shows a completed native compaction boundary or status. A start notice or a smaller context without a completed notice does not count.
- Manual compaction
- A user command from LeapMux starts native context compaction, and the next model turn uses the compacted context.
- Model context on resume
- After LeapMux reopens a native session, the next model turn can use prior conversation context. Saved LeapMux chat rows alone do not count.
- Rate-limit state
- Agent info shows a provider-reported quota window, use, or reset time. A retry notice alone does not count.
- Model
- The user can select a model in LeapMux, and the provider uses that selection in a native model request.
- Reasoning effort
- The user can select a reasoning level in LeapMux, and the provider applies it to a native model request. A separate selector or a model variant can choose the level.
- Mode
- The user can select a provider mode in LeapMux, and the provider applies that mode to the session.
- Permission prompts
- LeapMux shows a tool approval question and sends the user's allow or deny decision through the provider's control path.
- Smart permissions shortcut
- A LeapMux shortcut selects the provider's safety-assisted permission preset. The preset can approve, block, or ask about a tool call.
- Bypass permissions shortcut
- A LeapMux shortcut selects the provider's own mode that runs tools without permission prompts.
- Plan mode
- The user can enter a provider mode that plans work before it makes changes.
- LeapMux shows the provider's completed plan in a banner that accepts an approval or rejection.
- Session goal: set and clear
- The Goals sidebar lets the user set a standing objective and clear it through the provider's native goal path.
- Session goal: pause and resume
- The Goals sidebar lets the user pause an active objective and resume it through the provider's native goal path.
- A native to-do or plan update appears with item statuses in LeapMux's Goals and To-dos sidebar.
- A provider-reported subagent or background process appears with its status in the Background tasks sidebar.
- MCP tool execution
- The agent calls a Model Context Protocol tool, receives its result, and can use that result in a subsequent model request.
- MCP input request
- LeapMux collects fields requested by a Model Context Protocol server through a form or native questions and returns the answers to the server.
- Code execution
- The model supplies source to a dedicated code executor or a native script-and-language interface. The native agent runs the source and returns output or errors. Ordinary shell commands and browser-only scripts do not count. Provider notes state whether scripts can call agent tools when the documentation or the source of the agent shows it.
- Output file paths
- The agent reports a filesystem path for saved tool output. LeapMux stores that path with the native result. It shows the path and tool properties before the original output or inline preview. Copy keeps the original preview. LeapMux reads no output file. The provider controls file retention. An opaque ID or URI alone does not supply a filesystem path.
- Images in tool results
- LeapMux shows an image in the tool result row from live result bytes or the provider's stored attachment record.
- Subagent transcript tab
- A subagent has a separate tab that shows its messages. The messages do not stay only inside the parent's tool card.
- Subagent live transcript
- The subagent tab receives transcript rows, including tool activity, while the child runs and before its final report arrives.
- Send to a subagent
- A message typed in the subagent tab reaches that native child session instead of the parent session.
- Interrupt a subagent
- The subagent tab's Interrupt control stops the native child task without stopping its parent.
- Workflow grouping
- The Background tasks sidebar shows two or more native workflow work rows under one workflow heading.
Notes
Pi provides plan mode, session goals, to-do lists, agent questions and subagent tabs through extensions. The extensions come from the Pi package catalog: pi-plan-mode, pi-goal-x, rpiv-todo, rpiv-ask-user-question and pi-subagents. Shift+Tab does not toggle plan mode. Type the /plan command of the extension. Pi has native MCP support.
LeapMux drives Command Code through its experimental JSON-RPC mode and one official mod. This mode has no route for permission prompts, questions, plan approval, goals, or child agents. Command Code 1.74 and later also has an ACP (Agent Client Protocol) mode, which LeapMux does not use.
LeapMux drives DeepSeek Harness through its Web Remote interface. LeapMux checked release 0.2.0-rc.2.
LeapMux tested Gemini CLI 0.62.0 over ACP. Gemini CLI links a subagent to its root session only, not to its direct parent. It offers no way to send input to a subagent or to cancel one.
LeapMux drives Muse Code 1.4.13 over the Muse Session Protocol (MSP). Workflow folds create grouped rows. A matching native subagent supplies its own session, transcript, and controls. The four approval modes include the bypass preset (allowAll); no assisted preset exists.
LeapMux sends an attached text file to Command Code as a text block, and the agent reads its contents.
DeepSeek Harness saves an attached file and gives the model a handle. The model reads the content with a tool, so the content reaches the model one request later.
Gemini CLI reads the text of an attached file and sends it to the model.
Reasonix needs a model that supports images.
ZCode accepts an image only on a model that declares image input. LeapMux refuses an image for any other model.
LeapMux sends an attached image to Command Code as image data, and the agent passes the exact bytes to the model.
DeepSeek Harness sends an attached image to the model as an image part with the exact bytes.
Gemini CLI sends an attached image to the model with its type and exact bytes. LeapMux also shows the image in the message.
Codex has no input type for PDF files, so LeapMux refuses them. An upstream request for PDF support is open.
Cursor 2026.09.28 does not take PDF files over the connection that LeapMux uses. It replaces the PDF with its file name and a notice that it omitted the bytes. LeapMux refuses a PDF before the turn starts.
A PDF reaches the model as a file on a model that Copilot runs on the Responses or the Messages API, such as a GPT-5 or a Claude model. On an older model that Copilot runs on Chat Completions, Copilot sends the file name alone, and the chat states that after your message.
Goose 1.53.0 accepts images and text files over the connection that LeapMux uses, but it drops an embedded PDF. LeapMux refuses a PDF before the turn starts.
Pi accepts text and images as input. It has no input type for PDF files, so LeapMux refuses them. See the Pi RPC documentation.
Reasonix saves each PDF as an attachment that its tools can read.
LeapMux sends a PDF to ZCode when the model declares PDF input, and the model reads it as a file. On a model without PDF input, LeapMux refuses the PDF and states the model, because ZCode would leave the file out of the model request.
CodeWhale’s runtime accepts only text and inline images in a message, so LeapMux cannot send a PDF file to CodeWhale. LeapMux refuses the attachment.
Kimi Code cannot read a PDF file. Its file tool refuses PDFs, and its media tool reads only images and videos, so LeapMux refuses a PDF attachment. See Kimi Code’s tools reference.
Oh My Pi accepts text and images as input. It has no input type for PDF files, so LeapMux refuses them. See the Oh My Pi RPC documentation.
Amp’s stream input accepts only text and images, so LeapMux cannot send a PDF file to Amp. LeapMux refuses the attachment. See Amp’s streaming JSON documentation.
Cline’s input accepts only text files and images, so LeapMux cannot send a PDF file to Cline. LeapMux refuses the attachment.
Junie documents image input only, so LeapMux refuses a PDF file. See the Junie docs.
Letta Code accepts only text and images in a message. It has no input for PDF files, so LeapMux refuses a PDF upload for it.
Dirac reads only the text and images of a message. It drops the bytes of a PDF, so LeapMux refuses to attach one.
Qoder CLI reads only text and image blocks in its stream JSON input. It cannot represent a PDF block as model input, so LeapMux refuses a PDF upload for it.
Models marked as supporting PDFs accept files up to 3 MiB. If the selected model cannot receive the PDF, choose a compatible model and retry the queued message.
Fast Agent takes a PDF from the composer as an embedded document. LeapMux sends no other binary file to Fast Agent.
Command Code’s JSON-RPC mode accepts only text and images, so LeapMux cannot send it a PDF file. LeapMux refuses the attachment.
DeepSeek Harness saves an attached PDF file and gives the model a handle. The model reads the bytes with a tool, so the content reaches the model one request later.
Gemini CLI sends an attached PDF to the model as a PDF document, not only as a file name.
Muse MSP input accepts text and images only; its media/upload route carries video alone. LeapMux refuses PDF attachments.
Audio file attachments are not supported by this agent.
Use WAV, MP3, M4A, WebM or Ogg files with a model that declares audio input.
Audio file attachments are not supported by this agent.
Audio file attachments are not supported by this agent.
Use WAV, MP3, AAC, Ogg, FLAC or WebM with a Google model that accepts audio.
Use WAV, MP3, AAC, Ogg, FLAC or WebM with a Google model that accepts audio.
Audio file attachments are not supported by this agent.
Audio file attachments are not supported by this agent.
Audio file attachments are not supported by this agent.
Audio file attachments are not supported by this agent.
Audio file attachments are not supported by this agent.
Audio file attachments are not supported by this agent.
Use WAV, MP3, M4A, Ogg or FLAC with a model that accepts audio.
Use WAV, MP3, M4A, Ogg or FLAC with audio enabled for the selected Qwen model. Audio sent during a turn waits for the next turn.
Audio file attachments are not supported by this agent.
Audio file attachments are not supported by this agent.
Audio file attachments are not supported by this agent.
Audio file attachments are not supported by this agent.
Audio file attachments are not supported by this agent.
Audio files are verified through the native OpenAI-compatible model route, with or without a text prompt.
Audio file attachments are not supported by this agent.
Audio file attachments are not supported by this agent.
Audio file attachments are not supported by this agent.
Audio file attachments are not supported by this agent.
Audio file attachments are not supported by this agent.
Use WAV, MP3, AAC, Ogg, FLAC or WebM with a Google model. Native Commands still requires Bypass Permissions.
Audio file attachments are not supported by this agent.
Audio file attachments are not supported by this agent.
Audio files can be attached with or without a text prompt. WAV and FLAC are verified.
Audio file attachments are not supported by this agent.
Claude Code accepts text, images and PDF documents as input. It has no input type for other binary files, so LeapMux refuses them. See the Claude API documentation.
Codex has no native input type for other binary files. Audio recordings have their own feature row.
Cursor 2026.09.28 does not take binary files over the connection that LeapMux uses. It replaces a binary file with its file name and a notice that it omitted the bytes. LeapMux refuses a binary file before the turn starts.
Copilot CLI documents attachments for images and PDFs only. A binary file reaches the CLI, but the model receives only its file name, so LeapMux refuses it. See the GitHub documentation.
Kilo 7.8.1 cannot send a generic binary file to its model. The model adapter rejects the file type, so LeapMux refuses the file before the turn starts.
OpenCode 1.18.34 cannot send a generic binary file to its model. The model adapter rejects the file type (upstream report), so LeapMux refuses the file before the turn starts.
Goose 1.53.0 accepts images and text files over the connection that LeapMux uses, but it drops an embedded binary file. LeapMux refuses a binary file before the turn starts.
Pi accepts text and images as input. It has no input type for binary files other than images, so LeapMux refuses them. See the Pi RPC documentation.
Reasonix saves each binary attachment as a file that its tools can read.
ZCode 3.14.4 cannot use the bytes of a generic binary file. It decodes a small file as text and drops a large one, so LeapMux refuses the file.
CodeWhale’s runtime accepts only text and inline images in a message. Its file tool cannot read other binary files, so LeapMux refuses a binary attachment.
Kimi Code can read only text files, images, and videos. Its tools refuse other binary files, so LeapMux refuses a binary attachment.
MiMo Code 0.1.15 cannot send a generic binary file to its model. It passes the file through unconverted and the model service can refuse the whole request, so LeapMux refuses the file first.
Qwen Code 0.24.7 turns a binary file that is not an image, audio, video, or PDF into a text placeholder before the model sees it. LeapMux refuses the upload.
Oh My Pi accepts text and images as input. It has no input type for binary files other than images, so LeapMux refuses them. See the Oh My Pi RPC documentation.
Kiro reads Word and Excel documents. Its native conversation keeps at most five distinct documents.
Amp’s stream input accepts only text and images, so LeapMux cannot send any other binary file to Amp. LeapMux refuses the attachment. See Amp’s streaming JSON documentation.
Cline accepts only text files and images as input, and it refuses a file that holds binary data. LeapMux refuses any other binary attachment.
Junie documents image input only, so LeapMux refuses a binary file that is not an image.
Letta Code accepts only text and images in a message. It has no input for other binary files, so LeapMux refuses such an upload.
Dirac reads only the text and images of a message. It drops the bytes of any other binary file, so LeapMux refuses to attach one.
Qoder CLI reads only text and image blocks in its stream JSON input. It cannot represent another binary file as model input, so LeapMux refuses such an upload.
Factory Droid accepts only images, PDF files, and plain text as attached input. It has no input for any other binary file, so LeapMux refuses such an upload.
Fast Agent turns most binary files into a placeholder text, so the model does not see their bytes. LeapMux refuses to attach them.
Command Code’s JSON-RPC mode accepts only text and images, so LeapMux cannot send it another binary file. LeapMux refuses the attachment.
DeepSeek Harness saves an attached binary file and gives the model a handle. The model reads the bytes with a tool, so the content reaches the model one request later.
Verified with MP4 video files.
Muse MSP input accepts text and images only; its media/upload route carries video alone. LeapMux refuses binary attachments.
Junie 26.9.22 does not send the reasoning that its model returns, so the transcript shows no thinking. The answer still appears.
LeapMux shows the thinking text that Command Code reports for a turn.
DeepSeek Harness sends reasoning as its own block in the assistant message, and LeapMux shows it in the transcript.
LeapMux shows the thoughts of the model as a separate row. The row stays after a reload.
Cursor steers a running turn in its own terminal interface, as its documentation describes. Cursor 2026.09.28 has no steer request on the connection that LeapMux uses. LeapMux holds new input until the turn ends.
A message you send while the turn runs reaches the turn immediately, through Goose’s own steering request.
You can steer a running ZCode turn. ZCode adds your message to the turn after the running tool finishes, or continues the turn with it after the model’s answer. If you interrupt the turn first, the message returns to the queue and runs as the next turn. A message with an image or another binary file goes in the next turn.
Qwen Code reads a steered message after the running tool batch ends. If the turn ends without another tool batch, LeapMux sends the message as the next prompt.
A new Amp conversation offers steering after its first reply supplies a native thread ID.
CodeBuddy Code steers a running turn with text only. If the message attaches an image, a PDF, or another binary file, LeapMux sends the whole message as the next turn.
Letta Code 0.34.2 queues a message that arrives during a turn and runs it after the turn ends. It does not take new input into the running turn.
Fast Agent cannot take new input during a turn. LeapMux keeps your message queued and sends it as a new turn after the current turn ends.
Command Code takes new text for a running turn. If the message attaches an image, LeapMux sends the whole message as the next turn.
DeepSeek Harness adds new input to the running turn, and the next model request includes it.
Gemini CLI cannot take new input during a turn in the mode that LeapMux uses: a second prompt cancels the running one. LeapMux keeps your message queued until the turn ends.
Codex asks blocking questions in Plan mode. On models that offer request_user_input_async, it also asks in any mode without waiting, and you answer or skip each question later.
Cursor accepts selected answers only.
Copilot asks one question per request.
Goose 1.53.0 has no tool that lets the model ask you a question. It asks you only for tool approval and for input that an MCP server requests.
Choose an offered answer to continue. Canceling the question ends the turn.
Amp cannot ask a question in stream mode: it rejects the question tool and ends the session. LeapMux turns that tool off, so Amp asks no questions.
Cline asks one question at a time, with two to five options.
Answer CodeBuddy’s questions by selecting options or typing a response. Your choices and drafts survive page reloads. Questions still require your answer in Bypass mode.
Junie 26.9.22 sends a question over its permission channel, with one option for each choice. LeapMux shows it as a question, not as a permission prompt.
Letta Code 0.34 posts a question without pausing the turn. LeapMux shows the question and sends your answer as a new message. In Strict mode, Letta Code first asks permission to use the question tool.
Dirac asks questions through a form. LeapMux shows the form and returns your answer to Dirac in its next request to the model.
Fast Agent asks questions through a form on its own terminal. When LeapMux runs Fast Agent, no terminal exists, so the form cancels itself and LeapMux shows no question.
Command Code’s JSON-RPC mode withholds its question tool and has no route for an answer, so no question banner appears.
DeepSeek Harness asks questions through its question tool. LeapMux shows the question and returns your answer to the model.
Gemini CLI turns off its question tool when another program drives it, so it cannot ask you a question in LeapMux. The upstream request to let such programs answer questions is closed. Its pull request closed without a merge, and Gemini CLI 0.62.0 has no such function.
Cursor 2026.09.28 sends no context usage over the connection that LeapMux uses, so Agent info shows no context count. Cursor shows it only in its own terminal interface. A feature request is open.
The Context card shows CodeWhale’s own estimate of the whole context and its window, not the token counts of a single request.
Qoder reports context use as a ratio. LeapMux shows the percentage in Agent info and shows no token totals when Qoder sends none.
Agent info shows the input, output, and cache token counts that Command Code reports. The context limit comes from the model data of the agent.
Agent info shows the token counts that DeepSeek Harness reports. The usage data has no context window, so LeapMux takes the window from another message that DeepSeek Harness sends.
Agent info shows the token counts that Gemini CLI reports for the last request. It does not add up earlier turns.
Muse counts its own occupancy from the provider-reported facts: a model reply that states zero usage still leaves the host accounting above zero, so no zero reading exists to preserve.
Cursor 2026.09.28 reports no finished compaction over the connection that LeapMux uses, so LeapMux shows no compaction notice.
Goose reports a finished compaction, and LeapMux shows the notice. The next model request uses the new summary.
CodeWhale 0.10.0 reports a completed compaction. LeapMux shows one notice that states whether the compaction was manual or automatic.
MiMo Code reports compaction when it starts and when it ends. LeapMux shows one notice, with the summary, when it ends.
Amp compacts a long thread on its own server and prints no compaction event in its stream, so LeapMux shows no compaction notice.
CodeBuddy Code runs /compact in stream-JSON mode but reports no finished compaction. It sends only a compacting status that clears afterwards, so LeapMux shows no compaction notice.
Junie 26.9.22 sends no compaction event. Its /compress command only acknowledges the request, so the transcript shows no compaction notice.
After Dirac condenses the conversation, the chat shows a Conversation Condensed notice.
Qoder reports a finished compaction, and LeapMux shows it as a notice. Qoder refuses /compact when its token count says the summary would not reduce the context, for example in a short session. A refusal shows no completed notice.
Fast Agent compacts its history by itself when the context is nearly full. It sends LeapMux no completed event, so the chat shows no notice.
LeapMux shows a compaction notice after a manual /compact that Command Code summarized, and after an automatic trim that saved tokens. A failed attempt shows no notice.
LeapMux shows a notice when DeepSeek Harness finishes a compaction.
Gemini CLI compacts its context on its own, but it does not report this to LeapMux, so the chat shows no notice.
The private settings declare a config model catalog with context limits, so the host compaction thresholds resolve and /compact runs the native summarizer (generate_summary).
After compaction, Codex keeps your earlier prompts in the next request. It replaces its earlier answers with a summary.
Cursor 2026.09.28 has no compaction command over the connection that LeapMux uses. LeapMux sends /compact to the model as plain text, and Cursor does not compact.
After compaction, Copilot removes the older turns. Its summary can quote your earlier prompts, so their text can remain.
Reasonix 2.53.1 sends /compact to the model as ordinary text over the connection that LeapMux uses.
Amp has no command that LeapMux can use to compact a thread. /compact reaches Amp as ordinary text, and Amp compacts a thread only by itself on its server.
Cline compacts a long conversation on its own. Its /compact command works only in Cline’s own terminal interface, so LeapMux sends /compact to the model as ordinary text. See Cline’s terminal UI documentation.
/compact works in CodeBuddy Code, and the next turn uses the compacted context. The agent reports no finished compaction, so LeapMux shows no notice.
Junie 26.9.22 acknowledges /compress but makes no summary request. The next requests still carry the older work.
Compaction cannot be interrupted once it starts.
Type /smol to make Dirac condense its context. Dirac sends the condensed context in its next request to the model.
/compact starts a Qoder compaction. Qoder refuses it when its token count says the summary would not reduce the context. A short session, or a model that reports too few input tokens, can cause this refusal.
Fast Agent offers /compact only in its own terminal interface. Over the connection that LeapMux uses, it answers Unknown command: /compact.
A LeapMux compaction command makes Command Code summarize the session through an official mod, and the next turn uses the summary.
A LeapMux compaction command runs the native /compact of DeepSeek Harness, and the next model request uses the new summary.
Gemini CLI offers /compress only in its own terminal interface. The mode that LeapMux uses has no compaction command.
The private settings declare a config model catalog with context limits, so the host compaction thresholds resolve and /compact runs the native summarizer (generate_summary).
Cursor keeps the conversation on its own servers. LeapMux reopens the same Cursor conversation, so earlier turns stay available to the model.
LeapMux resumes a Cline session from Cline’s own store, which uses your own Cline settings and credentials. Do not continue one session in Cline and in LeapMux at the same time, because each one rewrites the stored conversation.
Dirac restores model context from a saved native task, including an incomplete task.
After LeapMux reopens a session, Command Code uses the earlier conversation in its next model request.
After LeapMux reopens a session, the next model request of DeepSeek Harness holds the earlier prompt and answer.
Gemini CLI 0.62.0 cannot reopen a session in the same UTC minute that created it: it fails with No previous sessions found. Fixed upstream in 0.63.0-preview.0. A session from an earlier minute reopens with its context.
Claude Code reports rate-limit windows for Claude Pro and Max sign-ins. A session that uses an API key shows no window in Agent info. See the status line documentation.
Cursor 2026.09.28 sends no quota window or reset time over the connection that LeapMux uses. When a quota ends, Cursor returns a plain failure message, so Agent info shows no rate limit.
Agent info shows the used and remaining quota that Copilot reports for each of its resources.
Agent info shows each quota window of your provider plans that Kilo reports, such as a coding plan that Kilo manages: its use, a warning near the limit or an exceeded state, and the time to its reset. Kilo reads a plan’s usage again at most once a minute.
OpenCode 1.18.34 reports no quota window, usage, or reset time, so Agent info shows no rate-limit state. OpenCode reads only the retry delay from rate-limit headers. An open upstream request asks for plan usage in its interface.
Goose 1.53.0 reports no quota window or reset time over the connection that LeapMux uses, so Agent info shows no rate limit.
Pi reports no quota or rate-limit window to its client, so Agent info shows none. Upstream closed a request for a rate-limit event as not planned.
Reasonix reports no quota window or reset time to LeapMux, so Agent info shows no rate limit.
ZCode 3.14.4 reports no quota window, usage, or reset time, so Agent info shows no rate-limit state. An open upstream request asks ZCode to show rate-limit usage.
CodeWhale reports token use and cost, but no provider quota window or reset time, so LeapMux cannot show a rate limit for CodeWhale. A quota failure appears only as an error message in the transcript.
Agent info shows the quota windows of your Kimi Code plan while the agent runs a model of your Kimi Code account: the 5-hour, 7-day and monthly windows, each with its use, a warning near the limit or an exceeded state, and the time to its reset. A model of another provider shows no window, because the plan does not limit it. Kimi Code’s own /usage follows the same rule.
MiMo Code 0.1.15 reports no quota window, usage, or reset time, so Agent info shows no rate-limit state. An open upstream request asks for a Token Plan usage endpoint.
Qwen Code sends LeapMux no quota window, usage limit, or reset time, so Agent info shows none. A model service failure still appears in the transcript.
Oh My Pi reports no quota or rate-limit window to its client, so Agent info shows none.
Grok Build sends LeapMux no quota window, usage limit, or reset time, so Agent info shows none. It reports a rate limit only as an error or a retry line in the transcript.
Agent info shows Kiroโs plan usage and billing-cycle reset date. The quota refreshes after each turn.
Amp’s stream reports no quota, usage, or reset time, so LeapMux cannot show a rate limit for Amp. A quota failure appears only as an error message in the transcript.
Cline’s hub reports no quota window, quota use, or reset time, so LeapMux cannot show a rate limit for Cline. A quota failure appears only as an error message in the transcript.
CodeBuddy Code sends no rate-limit or quota information in stream-JSON mode, so the Agent info card shows no rate-limit window. A model error can still end a turn.
Junie reports its quota only as text from its /stats command, not as quota data. Agent info therefore shows no quota.
Quota windows are available for connected ChatGPT subscriptions. API-key models do not report subscription quota through this route.
Dirac reports no quota window, use, or reset time, so Agent info shows no quota.
Agent info shows the use of each Qoder account quota: plan Credits, add-on Credits and an organization package, with a warning near the limit and an exceeded state. Qoder states no reset time that LeapMux shows.
Factory Droid reports a retry after an HTTP 429 error. It reports no quota window, remaining amount, or reset time, so Agent info shows no rate-limit data for Droid.
Fast Agent reports no quota window, use, or reset time, so Agent info shows no quota.
Command Code reports a retry delay but no quota window or reset time, so the Agent info card shows no rate-limit state. An upstream request asks for a usage and rate-limit API.
DeepSeek Harness reports no quota window or reset time. It shows only a failure notice when a quota ends, so the Agent info card shows no rate-limit state.
Gemini CLI reports only token counts over ACP. It reports no quota window, use, or reset time to LeapMux.
Muse reports subscription quota through usage/changed and usage/read, observed from the Meta account (live probe 2026-10-10: a 5-hour and a weekly window, each usedPercent/resetsAtMs, windowDurationMins 300). The Worker normalizes the frame into 5-hour/7-day entries and the agent card renders them. The local mock carries no account, so the browser proof shows the quota UI absent there.
Amp has no model setting. Its Mode setting picks the model and the reasoning effort for the whole thread. See Amp’s documentation on modes.
Fast Agent reports no model list and no model setting, so LeapMux shows no model selector. Its own /model switch command starts a new session.
The model list holds the models that the Command Code service offers to your account and the models that you declare with your own keys. A model switch can restart the session. It keeps the effort when the new model offers it, and it resets the effort to Auto otherwise.
LeapMux lists the models that DeepSeek Harness reports, such as Flash and Pro. The next model request uses the model that you select.
Gemini CLI 0.62.0 changes the model of a running session when you select another model.
The config model catalog lists the bundled Spark routes beside the pinned model, so a native switch between them reaches the model request.
LeapMux offers Reasoning effort only when the chosen model has effort levels. Claude Code lists no levels for Haiku models. See the model configuration documentation.
Cursor offers each reasoning effort as a variant in the model list. LeapMux has no separate Effort selector for Cursor.
Copilot offers Reasoning effort only for models that offer levels.
ZCode offers a reasoning level only when the chosen model offers levels.
Kiro offers Reasoning effort only for a model that supports effort levels.
Amp has no reasoning effort setting. Its Mode setting picks the model and the effort for the whole thread. See Amp’s documentation on modes.
LeapMux offers Reasoning effort for Cline only when the chosen model has effort levels.
Available effort levels depend on the model.
Factory Droid offers the reasoning levels none, low, medium, and high.
Fast Agent reports no reasoning-effort setting, so LeapMux shows no effort selector.
Command Code offers the effort levels that the selected model supports, from low to max.
The effort selector sets the reasoning effort of the next request. The Off choice turns thinking off.
Gemini CLI offers no reasoning-effort setting in the mode that LeapMux uses. Its model configuration fixes the thinking budget.
Pi has no mode setting that LeapMux can select. The plan extension uses its own /plan command.
LeapMux does not offer ZCode’s auto mode. ZCode 3.14.4 reserves it, does not implement it, and denies tool calls under it.
Amp’s Mode picks the model and the reasoning effort. A thread keeps the mode of its first message, so start a new session to use another mode. See The Dial.
CodeBuddy Code has six native permission modes. LeapMux offers five, including Auto. CodeBuddy advertises four at startup. LeapMux does not offer Don’t Ask.
Letta Code offers Standard, Accept Edits, Unrestricted, and Strict modes. A mode change applies to the running agent.
The Mode setting sets how much Factory Droid does without asking. Default asks before changes. Spec writes a plan first. Auto (Low), Auto (Medium), and Auto (High) allow more automatic work at each level.
The modes of Fast Agent are its configured agents. The Mode chip shows the selected agent. The permission policy of Fast Agent still controls permission prompts.
LeapMux offers three of the five Command Code modes: Default, Plan, and Bypass. A mode change reopens the same session.
LeapMux offers the Act and Plan modes of DeepSeek Harness.
Gemini CLI 0.62.0 has four modes: default, autoEdit, yolo, and plan. The autoEdit mode approves file tools but still asks before shell commands. Text from the model cannot change the mode.
Codex’s Allow as menu offers Once, Session, Command rule and Host rule.
If the Copilot CLI refuses LeapMux’s default permission mode, LeapMux opens the session in Manual mode.
Pi does not ask for approval before a tool call, so LeapMux shows no approval prompt. Upstream closed a request for a permission system.
The Always choice in a ZCode permission prompt saves a permission rule for the project.
CodeWhale denies an approval request that nobody answers within 300 seconds.
Kiro follows its own permission rules. Always with Deny at the everywhere scope refuses the same call in every workspace until you remove the rule in Kiro’s settings. Kiro runs project hooks without asking. In Supervised mode, a turn ends with a review of its file changes. Its Content Collection setting decides whether Kiro may use your session content to improve its service.
In Ask mode, LeapMux asks before each tool that Amp runs on your machine. Amp runs some tools on its own server, and those tools never ask. Text that you type before Deny reaches Amp as the reason.
In Default mode Qoder runs a read-only shell command without a prompt. It asks before a write and before any other call that its policy requires.
Fast Agent asks for permission before shell commands, MCP tool calls, and local file tools. LeapMux shows each request and returns your decision.
Command Code’s JSON-RPC mode has no route for a permission answer. In Default mode it blocks file changes without a prompt, and Bypass mode lets them run. Its ACP mode has permission prompts, but LeapMux does not use it.
LeapMux shows a tool approval question from DeepSeek Harness and returns your allow or deny decision to the agent.
In default mode, Gemini CLI asks before it changes a file. The file stays unchanged until you decide.
Smart permissions selects Codex’s auto-review, which Codex calls Approve for me. A reviewer agent decides each approval request. You can record your approval of a denied action from its row.
Cursor has a Smart Auto setting (--auto-review) in its terminal interface, but the connection that LeapMux uses ignores it. That connection offers only the Agent, Plan, and Ask modes.
Copilot’s Assisted mode asks a model to judge each approval. LeapMux enables the feature that this mode needs. If the Copilot CLI refuses the mode, the session starts in Manual mode.
Kilo 7.8.1 decides each tool call with fixed allow, ask, and deny rules. It has no safety-assisted permission mode (request closed as not planned), so LeapMux offers no Smart shortcut.
OpenCode 1.18.34 decides each tool call with fixed allow, ask, and deny rules. It has no safety-assisted permission mode (open upstream request), so LeapMux offers no Smart shortcut.
Pi has no permission modes, so LeapMux has no Smart preset to select. See the Pi security documentation.
Smart selects Reasonix Auto. Ordinary tools run while configured ask and deny rules and protected decisions still apply.
ZCode 3.14.4 reserves an auto permission mode but does not implement it, and the mode denies tool calls. The documented modes hold no safety-assisted preset, so LeapMux offers no Smart shortcut.
MiMo Code 0.1.15 has permission rules and a skip-all switch, but no safety-assisted permission mode, so LeapMux offers no Smart shortcut.
Smart selects Qwen Code’s Auto mode. A classifier model first reviews each tool call. It can allow the call, block it, or leave the decision to you.
Oh My Pi has three approval modes that depend only on the tool type. None uses a reviewer to judge a request, so LeapMux has no Smart preset for it.
Kiro has no safety-assisted permission mode. Its policy presets are fixed sets of allow rules, and LeapMux uses only the allow-all preset, as the Bypass shortcut. See Kiro permissions.
Amp has no safety-assisted permission preset for LeapMux to select. LeapMux offers the Ask and Allow All modes for Amp.
Cline has no safety-assisted permission preset for LeapMux to select. LeapMux offers the Plan, Act, and Auto-approve modes for Cline.
Smart selects CodeBuddy Auto. Before each tool call that would ask for approval, CodeBuddy asks a classifier model. The call runs when the classifier allows it, and it fails without a question when the classifier blocks it.
Smart selects Junie’s Brave Auto mode. Brave Auto uses a safety check to classify terminal commands. It approves the safe commands. It asks about risky or unrecognized commands.
Letta Code has no safety-assisted permission mode. Its modes are Standard, Accept Edits, Unrestricted, and Strict, so LeapMux offers no Smart shortcut. See Letta permissions.
Dirac has no safety-assisted permission preset, so LeapMux offers no Smart shortcut.
Smart selects Droid Auto (Medium). It automatically approves low- and medium-risk operations; high-risk commands still ask for approval.
Fast Agent has no safety-assisted permission preset, so LeapMux offers no Smart shortcut.
Command Code has no safety-assisted permission mode, so LeapMux offers no Smart permissions shortcut. See the permissions guide for its modes.
Smart selects Auto review, an experimental layer of DeepSeek Harness that LeapMux switches on. Before each tool call, the session’s model reviews the call. An allowed call runs without a sandbox, and a denied call asks you.
Gemini CLI has no safety-assisted permission preset. Its modes are default, autoEdit, yolo, and plan.
Muse approval modes are a closed set of four (allowAll, promptUnmatched, onRequest, denyUnmatched); the bypass preset maps to allowAll and no safety-assisted preset exists.
Bypass also approves the requests that work started before the switch still sends.
Bypass starts Cursor in native Run Everything mode. Once enabled, Bypass stays On for that session. Start a new session to turn it off. Explicit denials and team rules still apply.
The Bypass shortcut turns on Auto-approve, which approves each permission request once, as Kilo’s kilo run --auto does (CLI page). A request that Kilo reserves for a person, such as a batch of skill shell commands, still asks.
The Bypass shortcut turns on Auto-approve, which approves each permission request once, as OpenCode’s --auto option does (permissions page). Explicit deny rules still apply.
Pi has no permission modes. It runs every tool without asking, so there is no mode to select. See the Pi security documentation.
Bypass skips ordinary tool prompts. Reasonix still refuses file writes outside its configured workspace scope, and protected decisions can still require approval.
Bypass selects Junie’s Brave On mode, which executes potentially sensitive actions without approval.
LeapMux offers Qoder CLI’s Bypass Permissions mode (bypass_permissions, also called YOLO) and its shortcut. Tools then run without approval prompts. Qoder refuses the mode when its own settings disable it, and the picker then shows the mode that Qoder runs.
Bypass selects Droid Auto (High). It approves ordinary tools at every risk level while preserving native protected decisions.
Changing this setting restarts Fast Agent and stops any active turn. Saved conversations resume with the selected permission behavior.
The Bypass shortcut starts Command Code in its bypass mode, which runs tools without prompts. In Default mode the agent blocks file changes.
The Bypass shortcut selects the Full access preset of DeepSeek Harness. It removes the file sandbox and never asks for approval.
The Bypass permissions shortcut selects the yolo mode of Gemini CLI. Tools then run without permission prompts.
Goose has no Plan mode over the connection that LeapMux uses. Its modes are Auto, Approve, Smart Approve, and Chat. Goose removed its planning mode, which existed only in its terminal interface (pull request).
Oh My Pi has a plan mode, but its control interface has no command to enter it. Upstream tracks this in oh-my-pi#8171 and oh-my-pi#9230.
Amp has no plan mode, so LeapMux offers none for Amp.
Approving the plan ends Plan mode. A later planning prompt can make Junie ask ‘You already have a plan in this session’. The options are Start new session and Update the current plan.
Letta Code 0.34 has no plan mode, because Letta removed plan mode and its plan tools.
Factory Droid plans in its Spec mode. Droid leaves Spec mode when you approve the plan.
Fast Agent has no planning mode, so LeapMux shows no Plan selector.
Plan mode is a launch setting of Command Code. LeapMux changes it by reopening the same session.
Plan mode uses the native /plan command of DeepSeek Harness.
You can switch Gemini CLI to plan mode. It then uses read-only tools, and the mode stays after a reload.
The MSP schema holds no plan method, item, or model tool, and the binary offers no plan entry tool.
LeapMux offers goals only when the Claude Code build supports the /goal command. See the /goal documentation.
Cursor has a goal command in its terminal interface, but the connection that LeapMux uses carries no goal. LeapMux cannot set or clear a Cursor goal.
Needs a Kilo that lists the /goal command, as Kilo 7.8.1 does. LeapMux draws the goal controls only while Kilo lists the command.
OpenCode 1.18.34 has no session goal, so it has no way to set or clear one (open upstream request).
Needs a Goose CLI that lists the /goal command. LeapMux then sets or clears the goal by sending that command.
Kimi Code takes a goal only while its server reports the goal feature as active.
Needs a Qwen Code build that offers the /goal command.
Needs the /goal command. Grok Build offers it only when goal mode is on for the session. See the Grok Build slash command guide.
Kiro can clear a goal only while a goal run is live. A goal run lasts at most five rounds, then Kiro pauses the goal.
Amp has no built-in session goal. Its documentation shows a goal command only as an example plugin that users write themselves.
Cline has no session goal, so LeapMux has no goal to set or clear for Cline.
CodeBuddy Code offers no goal control through its stream-JSON protocol, which LeapMux uses.
Junie 26.9.22 lets LeapMux clear a goal, but its protocol offers no way to set one. Junie sets a goal only through its own /goal command and setup form, which its default session does not offer.
Letta Code has no standing goal feature, so you cannot set or clear a goal for it.
Dirac supports goals only in its interactive CLI. The mode that LeapMux uses to talk to Dirac has no goal support, so the Goals sidebar cannot set or clear a goal.
Factory Droid has no standing goal feature, so you cannot set or clear a goal for it.
Fast Agent has no standing goal feature, so the Goals sidebar cannot set or clear a goal.
Command Code runs /goal in its terminal interface. Its JSON-RPC mode has no goal operation, so LeapMux cannot set or clear a goal.
Setting a goal starts rounds of work in DeepSeek Harness. Clearing the goal stops further rounds.
Gemini CLI has no standing goal feature, so the Goals sidebar cannot set or clear a goal.
Muse works a goal in its own goal turns and parks it between them, so a settled session reads its goal as paused while the objective stays.
Claude Code can set and clear a goal. It has no command to pause or resume a goal. See the /goal documentation.
Cursor has a goal command in its terminal interface, but the connection that LeapMux uses carries no goal. LeapMux cannot pause or resume a Cursor goal.
Needs a Kilo that lists the /goal command, as Kilo 7.8.1 does. Pause and resume use the same command. LeapMux draws the goal controls only while Kilo lists it.
OpenCode 1.18.34 has no session goal, so it has nothing to pause or resume (open upstream request).
Goose’s /goal command can set a goal or clear it. Goose has no pause or resume for a goal.
Pause prevents further goal rounds. The current round continues until it ends or you interrupt it. Resume continues the retained objective.
CodeWhale’s runtime has no way to pause or resume a goal. Only CodeWhale’s own terminal UI has /goal pause and /goal resume.
Kimi Code can pause and resume a goal only while its server reports the goal feature as active.
MiMo Code 0.1.15 has no paused goal state. A goal is set, judged, or cleared (open upstream request asks for pause and resume).
Needs the /goal command. A pause takes effect at once and stops the running goal round.
Needs the /goal command. A pause takes effect after the running goal round ends.
Kiro can pause or resume a goal only while a goal run is live. Resume a goal that Kiro paused after five rounds to continue.
Amp has no built-in session goal, so a goal cannot pause or resume. Its documentation shows a goal command only as an example plugin.
Cline has no session goal, so LeapMux has no goal to pause or resume for Cline.
CodeBuddy Code offers no goal control through its stream-JSON protocol, which LeapMux uses.
Junie 26.9.22 can clear a goal but offers no way to pause or resume it.
Letta Code has no standing goal feature, so you cannot pause or resume a goal for it.
Dirac supports goals only in its interactive CLI. The mode that LeapMux uses to talk to Dirac has no goal support, so the Goals sidebar cannot pause or resume a goal.
Factory Droid has no standing goal feature, so you cannot pause or resume a goal for it.
Fast Agent has no standing goal feature, so the Goals sidebar cannot pause or resume a goal.
Command Code runs /goal in its terminal interface. Its JSON-RPC mode has no goal operation, so LeapMux cannot pause or resume a goal.
Pause stops the running round of a DeepSeek Harness goal, and Resume starts the next round.
Gemini CLI has no standing goal feature, so the Goals sidebar cannot pause or resume a goal.
A parked goal offers no pause (it is already paused); its resume runs a fresh native goal turn and parks again once it settles.
Letta Code keeps MCP servers in its own per-agent settings, and the model calls their tools through letta mcp call in the Bash tool. A project .mcp.json file does not configure these servers.
Dirac has no MCP support. It ignores the MCP server list that LeapMux sends, so no MCP tool reaches its model.
Command Code runs MCP tools, and their results reach the next model request.
DeepSeek Harness calls MCP tools and uses their results.
Gemini CLI calls the tools of an MCP server and returns the result to the model. It drops the structured data and the metadata of a successful result. A failed result keeps its exact message.
Cursor 2026.09.28 declines an MCP form request over the connection that LeapMux uses, so an MCP server cannot ask you for input.
Kilo 7.8.1 declares no MCP input capability, so an MCP server cannot ask it for input (open upstream request).
OpenCode 1.18.34 declares no MCP input capability, so an MCP server cannot ask it for input. Upstream added the capability to OpenCode v2, a later version.
Pi’s MCP client does not support input requests from MCP servers. Upstream closed the request as not planned.
When an MCP server asks for input, ZCode forwards the server’s form, and LeapMux shows it as a form with typed fields, such as a number, a yes-or-no choice, or a list of choices. Your answer reaches the server with those types.
CodeWhale’s MCP client does not support input requests, so an MCP server cannot ask the user for input through CodeWhale. A request that a server sends waits until the tool call times out.
Kimi Code’s MCP client does not support input requests, so an MCP server cannot ask the user for input through Kimi Code.
MiMo Code 0.1.15 declares no MCP input capability, so an MCP server cannot ask it for input. A later change (merged upstream) adds confirmation forms.
Qwen Code 0.24.7 does not support MCP input requests (elicitation), so an MCP server cannot ask you for input through it. Related upstream work is tracked in qwen-code#8968.
Oh My Pi’s MCP client does not declare support for input requests, so an MCP server cannot ask for input. Upstream tracks this in oh-my-pi#12471.
Amp does not support MCP input requests, so an MCP server cannot ask the user for input through Amp.
Cline’s MCP client does not support input requests from MCP servers, so a server cannot ask the user for input through Cline. See the open feature discussion.
CodeBuddy Code’s MCP client does not support input forms, so it refuses an MCP server’s form request and no form appears. The refused tool call still shows as completed.
Junie loads MCP tools, but its MCP client does not support input requests (elicitation) from a server. An MCP server cannot ask you for input through Junie.
Letta Code’s MCP client does not support input requests from an MCP server. It answers such a request with a Method not found error, so LeapMux cannot show an input form.
Dirac has no MCP support, so no MCP server can ask you for input.
Factory Droid 0.233.0 does not support input requests from an MCP server. Its MCP client answers such a request with a Method not found error, so LeapMux cannot show an input form.
Fast Agent answers an MCP input request through a form on its own terminal. Without a terminal the form cancels, the MCP server receives a cancel, and LeapMux shows no form.
Command Code’s MCP client declares no support for input requests and gives no reply to one, so LeapMux shows no form. A server that waits for a reply keeps its tool call pending.
The MCP client of DeepSeek Harness declares no support for input requests, so an MCP server cannot ask for input and LeapMux shows no form. The server receives a Method not found error.
Gemini CLI does not tell MCP servers that it can show input forms, so no MCP server asks you for input.
The binary contains no elicitation support: its MCP handshake requests no elicitation capability and a server elicitation/create waits unanswered until the turn is interrupted.
Claude Code runs JavaScript that the model writes as a dynamic workflow. The script starts subagents and cannot run commands or read files itself. On the Pro plan, turn on dynamic workflows in /config. See the workflows documentation.
Codex runs JavaScript that the model writes through its exec tool, and the script can call Codex tools. Codex truncates long script output and keeps the start and the end.
Cursor 2026.09.28 has no tool that runs code that the model writes, apart from ordinary shell commands.
Copilot CLI has no tool that runs model-written code. Its 15 built-in tools cover shell, files, web fetch and agents.
Needs the KILO_EXPERIMENTAL_CODE_MODE variable or the experimental.code_mode setting. Kilo offers its execute tool for running code only then, and a restricted-network session can hide it. A script can call the connected MCP tools.
Needs the OPENCODE_EXPERIMENTAL_CODE_MODE setting. OpenCode offers its execute tool for running code only when that setting is on. A script can call the connected MCP tools.
Needs Goose’s Code Mode extension, which is off by default. The model then runs TypeScript code, and the code can call other Goose tools. Tested with Goose 1.52.0.
Pi runs JavaScript that the model writes through its codemode tool, in a sandbox. Scripts call Pi and MCP tools. Turn on the tool with "defaultTools": ["+codemode"] in the Pi settings. See the codemode documentation.
Enable agent.code_mode = true in Reasonix to use its Starlark executor. Scripts can call agent tools.
ZCode runs JavaScript through its workflow feature. The model writes a workflow script, ZCode runs it, and the model reads the result or the script error.
CodeWhale runs model-written code with its js_execution and code_execution tools. The model first activates them with tool_search, and your machine needs Node or Python for the matching interpreter. A script that execute_tools runs can call only read-only tools that need no approval.
Kimi Code has no tool that runs code that the model writes. Its tools cover shell commands, files, search, web access, questions, goals, and agents. See Kimi Code’s tools reference.
MiMo Code runs code through its exec tool. The tool is on for GPT-style models, or when MIMOCODE_ENABLE_EXEC_TOOL is set. A script can call the permitted session tools with tools.<name>(arguments).
Needs the experimental tools.codeModeOnly setting in Qwen Code 0.24.7. Qwen Code then runs the JavaScript of the model in an isolated exec tool, and scripts can call the tools that the session permits.
Oh My Pi runs model-written Python or JavaScript through its eval tool, and code can call session tools with tool.<name>(arguments). Each language keeps its own runtime between calls. Python needs a usable interpreter. See the eval documentation.
Grok Build has no plain code tool. It runs the Rhai script of a model through its workflow tool, and the script starts subagents. LeapMux shows the script result or the script error when the workflow ends.
Kiro CLI 2.24.0 has shell, file, MCP, and subagent tools, but no tool that runs a script. Its code tool searches code and does not run it. See the Kiro tool list.
Amp executes code through its remote service.
Cline has no tool that runs code that the model writes. Its tools cover shell commands, files, search, web access, questions, and agents.
CodeBuddy Code offers its JavaScript REPL only in Code Mode or with CODEBUDDY_REPL_ENABLED=1. Scripts that run in it can call session tools.
Junie 26.9.22 has no tool that runs a script. It offers a shell tool, file tools, and subagents.
Letta Code executes JavaScript through its native Workflow tool.
Dirac runs model-written scripts through its command tool, which takes a script and a language. Node scripts use the interpreter of the host. A script cannot call other Dirac tools.
Qoder’s Workflow tool runs JavaScript that the model supplies, and the script starts subagents. It returns the computed result or the script error.
Factory Droid runs JavaScript through its Script and WaitForScript tools when Script mode is available for the selected model. Each Script call starts a new evaluation and can call native tools.
The default tools of Fast Agent include a shell but no tool that runs model-written code in a chosen language.
Command Code runs JavaScript through its native codemode tool.
DeepSeek Harness runs model-written JavaScript with its run_code tool, and those scripts can call registered tool functions. Scripts in the workflow tool cannot call agent tools.
Gemini CLI has a shell tool but no tool that runs model-written code in a chosen language.
The workflow tool runs deterministic JavaScript in the native host; children submit through submit_result.
Claude Code reports the path of the file that holds the full output of a long tool result. LeapMux shows the path before the preview and does not read the file.
Codex keeps command output in its result and saves no file for it, so LeapMux shows no output path. Upstream tracks a request to save the full output.
Cursor sends only the exit code and the output text of a shell command. It sends no path for saved output, so LeapMux shows the output text only.
Copilot reports the path of the file that holds the output of a shell command. LeapMux shows the path and does not read the file.
Kilo saves long tool output in a file and reports its path. LeapMux shows the path above the preview. It does not read the file, and Kilo controls how long the file stays.
OpenCode saves long tool output in a file and reports its path. LeapMux shows the path above the preview. It does not read the file, and OpenCode controls how long the file stays.
Pi reports the path of the file that holds the full output of a long tool result. LeapMux shows the path before the preview and does not read the file.
Large tool results show the path to the native saved output. The result row keeps Reasonix’s preview.
ZCode saves long tool output in a file and reports its path. LeapMux shows the path above the preview and does not read the file.
When CodeWhale reports a file that holds a saved tool output, LeapMux shows its path before the original preview. LeapMux never reads that file.
When Kimi Code saves a long tool output to a file, it states the path in the tool result. LeapMux shows that path before the original preview and never reads the file.
MiMo Code saves long tool output in a file and reports its path. LeapMux shows the path above the preview and does not read the file.
Qwen Code reports the path of saved shell output. LeapMux shows that path before the output preview and does not open the file.
Oh My Pi identifies saved tool output with an artifact ID, not a file path, so LeapMux shows no output path.
Grok Build reports the path of the log file that holds the output of a shell command. LeapMux shows that path before the output preview and does not open the file.
Kiro reports the path of a saved tool output file. LeapMux shows that path before the output preview and does not open the file.
Amp returns the end of a large shell output inline and states how many lines it dropped. It reports no file that holds the full output, so LeapMux shows no output path.
Cline keeps the start and the end of a long command output inline and cuts the middle. It reports no file that holds the full output, so LeapMux shows no output path.
CodeBuddy Code saves long tool output to a file and reports its path. LeapMux shows the path before the preview and does not read the file.
Junie reports the path of saved shell output in its session event log, not in the live tool update. LeapMux shows that path before the output preview and does not open the file.
Letta Code ends a long tool result with the path of a file that holds the full output. LeapMux shows the path with the result and keeps the original preview.
When a Dirac command prints very long output, Dirac saves the full output to a file and states its path. LeapMux shows the path and the original preview. LeapMux does not read the file.
Qoder reports the path of a file that holds a saved tool output. LeapMux shows the path with the result and keeps the original preview.
Factory Droid saves the full output of a shell command to a file and reports its path. LeapMux shows the path with the result and keeps the original preview.
Command Code reports the path of a saved full tool output. LeapMux shows the path before the preview and does not read the file.
DeepSeek Harness reports the path of saved output when a tool output spills to a file. LeapMux shows the path before the preview and does not read the file.
Gemini CLI can save large old tool output to a file and give its model the path. It does not send that path to LeapMux.
Tool results show the saved image and retain it after reload.
ZCode returns a tool result as text only. LeapMux still shows the picture, because ZCode saves it with the tool call.
CodeWhale reports the image that a tool returns. LeapMux checks the image and shows it in the tool row.
Qwen Code gives its model the image that a tool reads, but it sends LeapMux only a text description of it. LeapMux cannot show the image in the tool row.
LeapMux draws an image that Amp’s Read tool returns. Amp’s current modes offer no Read tool, so this applies to threads that still use it. An Amp MCP tool result is text only, so no image appears there.
LeapMux shows images from Cline file reads and opens them in the image viewer.
CodeBuddy Code sends the image from its Read tool to the model separately. Its stream gives LeapMux only a text placeholder for the tool result, so the tool row shows no image.
Junie gives its model the image that an MCP tool returns, but it sends LeapMux an empty tool result. LeapMux cannot show the image in the tool row.
Letta Code sends the picture from a ViewImage call to its model. Its live output to LeapMux holds only the text of the result, so LeapMux shows no image in the result row.
Dirac passes the image that a tool reads to its model, but it sends no image to LeapMux, so the tool row shows no image.
LeapMux shows an image that an MCP tool returns. Command Code compresses an image that it reads, so LeapMux shows the compressed picture.
LeapMux shows an image that the read_image tool returns, taken from the files that DeepSeek Harness saves.
When Gemini CLI reads an image file, LeapMux shows the image in the tool result. The image stays after a reload.
Muse’s read of an image hands its bytes to the next model request as an image part; the tool result states the file and media type as text alone, so the row draws no picture.
Amp’s stream shows a subagent only as a call and a final report. It sends no messages and no session for the subagent, so LeapMux has no subagent tab for Amp.
Each Dirac subagent opens its own tab. The tab shows the prompt and loads the full history when the subagent ends. Dirac does not stream the full transcript while the subagent runs.
Each Fast Agent subagent opens its own tab. The tab shows the prompt and loads the full history when the subagent ends. If Fast Agent gives no unique ID for a result, LeapMux closes that tab with an archive-unavailable report.
The child tab holds the prompt that Command Code gave the child and its final report. Command Code sends no full child transcript.
The child tab shows the messages of the child agent and each later message that the parent agent sends to it. It hides the instruction and context messages that DeepSeek Harness injects.
Each Gemini CLI subagent opens its own tab. Gemini CLI links a subagent to its root session and not to its direct parent.
Cursor streams the messages of a subagent while it runs, and LeapMux shows them in the subagent tab.
The subagent tab shows the subagent’s own messages and tool calls while it runs, before its final report.
The subagent tab shows the subagent’s own messages and tool calls while it runs, before its final report.
LeapMux shows the tool calls of a Goose subagent while it runs. Goose sends no text from the subagent.
The pi-subagents extension sends LeapMux progress counts and a final report for a subagent. The messages of a running subagent stay inside Pi. The child tab shows the prompt when the subagent starts and the report when it ends.
Reasonix supplies a subagent’s report when the subagent ends. The subagent tab shows its prompt while it runs.
LeapMux shows the tool calls of a ZCode subagent while it runs. The subagent’s text arrives as the final report.
LeapMux shows each message of a CodeWhale subagent when that message ends, with about half a second of lag.
LeapMux shows a long text run of a subagent when its message ends, not word by word. Rows of a background subagent lag by about half a second.
Amp’s stream drops the messages of a running subagent. LeapMux shows nothing from the subagent until its final report arrives in the result of the call.
LeapMux shows one running Cline subagent live. When two subagents run at the same time, their transcripts appear only when they finish.
While a Dirac subagent runs, its tab shows the prompt and short progress lines. Dirac gives the full tool transcript only after the subagent ends.
While a Fast Agent subagent runs, its tab shows the prompt. Fast Agent gives the full tool transcript only after the subagent ends.
While a child runs, its tab shows short activity notices from Command Code. It shows no child text and no full tool result.
The child tab updates while the child works, including its tool activity, before its final report arrives.
The tab of a Gemini CLI subagent fills while the subagent runs. Gemini CLI sends no live stream for a subagent, so LeapMux shows each completed model or tool step after Gemini CLI saves it.
Claude Code lets a user message a subagent in its own terminal app. The input stream that LeapMux uses cannot address one subagent, so the child tab is read-only.
Codex rejects direct input to a subagent that Multi-Agent V2 starts, so the child tab is read-only. Upstream tracks this in openai/codex#33885.
Cursor announces each subagent with no input capability and takes no message for it. The subagent tab stays read-only while the subagent runs.
A message typed in the tab of a background subagent reaches that subagent. A running subagent reads it in its next turn, and an idle one starts a turn for it. A foreground subagent takes no message, because Copilot never passes it one.
A message typed in the tab of a running subagent reaches that subagent, which reads it during its run. A subagent that finished takes no message.
A message typed in the tab of a running subagent reaches that subagent, which reads it during its run. A subagent that finished takes no message.
Goose runs a subagent inside a tool call and has no way to send it a message while it runs. The subagent tab stays read-only.
The pi-subagents extension routes a message to a running subagent only in the Pi terminal app. In other modes the text goes to the main model, so the child tab is read-only.
Reasonix exposes no way to send a message to a running subagent. Its tab stays read-only.
ZCode 3.14.4 refuses input to a subagent session, because it treats that session as read-only. An open upstream request asks for messages to active subagents.
CodeWhale’s runtime has no route that sends a message to a running subagent. Only the model can message a subagent, so the subagent tab is read-only.
Kimi Code accepts a message that you type in the subagent tab while the subagent runs.
MiMo Code accepts a message typed in the subagent tab while the subagent runs.
Qwen Code gives a client no way to send a message to a subagent. Only the parent model can do it, so the subagent tab stays read-only.
Send text with Steer while the subagent runs. Subagent attachments are not supported.
Kiro offers no way to send a message to a running subagent, so the subagent tab is read-only.
Amp accepts stream input only for the main thread. It exposes no handle for a subagent, so LeapMux cannot send a message to one.
Cline’s hub has no command for one running subagent, so LeapMux cannot send a message to a subagent. The subagent tab is read-only.
CodeBuddy Code has no way to send input to a running child agent in stream-JSON mode, so the child tab is read-only.
Junie offers no way to send a message to a running subagent, so the subagent tab is read-only.
Letta Code has no way to send a message to a running subagent, so its subagent tabs are read-only.
Dirac subagents run inside the parent task and take no input from you, so the subagent tab is read-only.
Qoder CLI runs a subagent as an isolated task that returns its result to the main session. It has no way to send a message to a running subagent, so its subagent tabs are read-only. See Qoder subagents.
You can type in a Factory Droid subagent tab while the subagent runs. Droid sends the message to that subagent.
Fast Agent subagents take no input after they start, so the subagent tab is read-only.
Command Code’s JSON-RPC mode sends new input to the parent turn only. It has no route to a child agent, so the child tab is read-only.
A message typed in the child tab goes to that child agent, which keeps its earlier answers.
Gemini CLI subagents take no input from you, so the subagent tab is read-only.
Completed-child input requires a trusted workspace. Muse can reject a human follow-up after the parent gives a completed child another task.
The Interrupt control of a subagent tab stops that subagent. The parent session keeps running.
Cursor stops only the parent turn. It has no request to stop one subagent, so the subagent tab has no Interrupt control.
The Interrupt control of a subagent tab stops that subagent, and the parent session keeps running.
The Interrupt control of a subagent tab stops that subagent, and the parent session keeps running.
The Interrupt control of a subagent tab stops that subagent, and the parent session keeps running.
Goose can stop a background subagent only through a model tool call. It has no client request that stops one subagent, so the subagent tab has no Interrupt control.
The pi-subagents extension offers no way to stop one subagent from outside the Pi terminal app, so the child tab has no Interrupt control.
Reasonix exposes no request that stops one subagent while its parent continues. The child tab has no Interrupt control.
The Interrupt control of a background subagent’s tab stops that subagent, and the parent session keeps running. A foreground subagent runs inside its parent’s turn, so only the parent’s Interrupt control stops it.
CodeWhale 0.10.0 has no route that stops one subagent, so LeapMux cannot interrupt a subagent alone. A later CodeWhale release adds a cancel route for subagent runs.
MiMo Code runs a subagent as an actor inside the parent’s session and offers no request that stops one actor. Only the parent agent’s own actor cancel call does, so the subagent tab has no Interrupt control.
Kiro offers no way to stop one subagent without its parent, so the subagent tab has no Interrupt control.
Amp can stop only a whole run, not one subagent. It exposes no handle for a subagent, so LeapMux cannot interrupt one alone.
Cline’s hub can stop only a whole run, not one subagent, so LeapMux cannot interrupt a subagent alone.
CodeBuddy Code can interrupt only the whole session in stream-JSON mode, not one child agent. LeapMux refuses an interrupt from a child tab.
Junie offers no way to stop one subagent without its parent, so the subagent tab has no Interrupt control.
Letta Code has no command that stops one subagent while its parent keeps running. You can interrupt only the parent agent.
Dirac cannot stop one subagent alone, so the subagent tab offers no Interrupt.
The Interrupt control of a subagent tab stops that subagent, and the parent session keeps running. A subagent that a Workflow script runs has no Interrupt control, because Qoder cannot stop it alone.
Factory Droid has no command that stops one subagent while its parent keeps running. You can interrupt only the parent agent.
Fast Agent cannot stop one subagent alone, so the subagent tab offers no Interrupt.
Command Code’s JSON-RPC mode has no way to stop one child agent. The model can stop a child with its own tool call, but the child tab cannot.
Interrupt in the child tab stops that child. The parent receives a report that the child stopped, and the parent keeps running.
Gemini CLI cannot stop one subagent alone, so the subagent tab offers no Interrupt.
The Background tasks sidebar shows each agent of a Workflow run as its own row, grouped under the workflow’s name with the run itself.
Codex has no workflow feature that groups work. Each exec call stays a separate tool call.
Cursor reports each subagent alone, with no workflow group. The Background tasks sidebar cannot show subagents under one workflow heading.
Copilot 1.0.87 restricts its native factories and dynamic workflows. Both APIs refuse the tested session.
Kilo 7.8.1 has no workflow feature. It reports subagent tasks without a group, so the Background tasks sidebar shows no workflow heading.
OpenCode 1.18.34 has no workflow feature. It reports subagent tasks without a group, so the Background tasks sidebar shows no workflow heading.
Goose reports each subagent alone, with no workflow group. The Background tasks sidebar cannot show subagents under one workflow heading.
The pi-subagents extension starts a workflow run in the background and reports only a task ID. It sends no progress for the stages of the run, so the sidebar shows one task.
Reasonix reports each subagent without a workflow group. The sidebar cannot place those subagents under one workflow heading.
The Background tasks sidebar shows each subagent task of a ZCode workflow under the workflow’s own row, with the subagent’s name and the status of its task.
CodeWhale reports a workflow as one item with a status. It sends no row for each child, so LeapMux shows one workflow row and has nothing to group under it.
The Background tasks sidebar shows each agent of a workflow run as its own row, grouped under the workflow’s name with the run itself.
Oh My Pi has no workflow feature that groups work. It reports each subagent as a separate task.
Amp’s stream has no workflow structure. Each subagent call appears as its own row, so LeapMux groups none of them.
Junie reports each subagent as a separate row with no workflow grouping, so the Background tasks sidebar shows no workflow heading.
Letta Code reports a workflow only as one background process with phase counts. It sends no separate row for each agent of a workflow, so LeapMux shows no workflow group.
Dirac reports each subagent on its own and sends no workflow group, so the sidebar lists the subagents as separate rows.
Qoder sends the start of each workflow child task but no child messages while the workflow runs. LeapMux shows each child prompt while it runs. When the workflow ends, LeapMux loads each saved child transcript that Qoder keeps.
Factory Droid runs its multi-agent missions only through the one-shot droid exec --mission command. Droid refuses a mission on the streaming input that LeapMux uses, so no workflow group appears. See Droid missions.
Fast Agent reports each subagent on its own and sends no workflow group, so the sidebar lists the subagents as separate rows.
Command Code reports each child agent as a separate event and has no workflow identity. The Background tasks sidebar cannot group children under a workflow heading.
The Background tasks sidebar groups the child agents of one DeepSeek Harness workflow under one heading.
Gemini CLI sends no workflow group for its subagents, so the sidebar lists each subagent as a separate row.
Workflow folds create one grouped row per child. A matching native subagent supplies its own session, transcript, and controls on that row.