Skip to content

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

FieldWhat it does
WorkerThe machine that will run the agent. Determines which providers are available and where the working directory lives. See Managing Workers.
Agent ProviderWhich agent CLI to launch. Shows the provider icon, label, and a chevron; a check marks the current choice.
DirectoryThe 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 sessionOptional. 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).
TitleThe 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 optionsAppears 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 ”); you can rename the tab later. For how tabs are placed, split, and tiled, see Tabs & Layout.

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:

ModeEnterModifier+Enter
Enter sendsSends the message(Shift+Enter for a new line)
Cmd/Ctrl+Enter sends (default)Inserts a new lineCmd+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 Interrupt button is hidden whenever the agent is waiting on you with a permission or question prompt โ€” answer the prompt instead (see Permission and approval prompts).

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

ControlWhat it does
Move up / Move downReorder a waiting item inside its reorder group. Drag a row by its grip for the same effect.
EditLoad the item back into the composer to change it. Another device editing it shows Take Over instead.
DeleteDrop the item. Click twice to confirm.
RetrySend an item again after a delivery failure.
SteerHand the first item to the turn already running, instead of waiting for it to finish.
Pause QueueStop 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 /clear or 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.

Some rows are intentionally hidden to keep the transcript readable โ€” for example, Claude Code suppresses its internal todo-list and tool-search bookkeeping rows. The information still drives the UI (the todo sidebar), it just isn’t repeated inline.

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 Read opens; 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.

Most settings changes apply live. LeapMux restarts the provider when a launch flag must change. Examples include a permission-mode change, effort Auto, and a model change to a model that does not offer the current effort; a model change keeps the current effort when the new model offers it. The interface applies each change optimistically and restores the prior value after a failure.

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
FeatureClaude Code Codex Cursor GitHub Copilot Kilo OpenCode Goose Pi โ€ Reasonix ZCode
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โœ…โ€ ๐Ÿšซโ€ ๐Ÿšซโ€ ๐Ÿšซโ€ ๐Ÿšซโ€ ๐Ÿšซโ€ ๐Ÿšซโ€ ๐Ÿšซโ€ ๐Ÿšซโ€ โœ…โ€ 
FeatureCodewhale Kimi Code MiMo Code Qwen Code Oh My Pi Grok Build Kiro Amp Cline CodeBuddy Code
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๐Ÿšซโ€ โœ…โœ…โœ…โ€ ๐Ÿšซโ€ โœ…โœ…๐Ÿšซโ€ โœ…โœ…
FeatureJunie Letta Code Dirac Qoder CLI Factory Droid Fast Agent Command Code โ€ DeepSeek Harness โ€ Gemini CLI โ€ Muse Code โ€ 
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.
Plan approval banner
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.
To-do sidebar
A native to-do or plan update appears with item statuses in LeapMux's Goals and To-dos sidebar.
Background tasks 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:

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.

Command Code:

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.

DeepSeek Harness:

LeapMux drives DeepSeek Harness through its Web Remote interface. LeapMux checked release 0.2.0-rc.2.

Gemini CLI:

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.

Muse Code:

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.

Command Code โ€” Text attachments:

LeapMux sends an attached text file to Command Code as a text block, and the agent reads its contents.

DeepSeek Harness โ€” Text attachments:

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 โ€” Text attachments:

Gemini CLI reads the text of an attached file and sends it to the model.

Reasonix โ€” Image attachments:

Reasonix needs a model that supports images.

ZCode โ€” Image attachments:

ZCode accepts an image only on a model that declares image input. LeapMux refuses an image for any other model.

Command Code โ€” Image attachments:

LeapMux sends an attached image to Command Code as image data, and the agent passes the exact bytes to the model.

DeepSeek Harness โ€” Image attachments:

DeepSeek Harness sends an attached image to the model as an image part with the exact bytes.

Gemini CLI โ€” Image attachments:

Gemini CLI sends an attached image to the model with its type and exact bytes. LeapMux also shows the image in the message.

Codex โ€” PDF attachments:

Codex has no input type for PDF files, so LeapMux refuses them. An upstream request for PDF support is open.

Cursor โ€” PDF attachments:

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.

GitHub Copilot โ€” PDF attachments:

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 โ€” PDF attachments:

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 โ€” PDF attachments:

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 โ€” PDF attachments:

Reasonix saves each PDF as an attachment that its tools can read.

ZCode โ€” PDF attachments:

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 โ€” PDF attachments:

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 โ€” PDF attachments:

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 โ€” PDF attachments:

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 โ€” PDF attachments:

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 โ€” PDF attachments:

Cline’s input accepts only text files and images, so LeapMux cannot send a PDF file to Cline. LeapMux refuses the attachment.

Junie โ€” PDF attachments:

Junie documents image input only, so LeapMux refuses a PDF file. See the Junie docs.

Letta Code โ€” PDF attachments:

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 โ€” PDF attachments:

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 โ€” PDF attachments:

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.

Factory Droid โ€” PDF attachments:

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 โ€” PDF attachments:

Fast Agent takes a PDF from the composer as an embedded document. LeapMux sends no other binary file to Fast Agent.

Command Code โ€” PDF attachments:

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 โ€” PDF attachments:

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 โ€” PDF attachments:

Gemini CLI sends an attached PDF to the model as a PDF document, not only as a file name.

Muse Code โ€” PDF attachments:

Muse MSP input accepts text and images only; its media/upload route carries video alone. LeapMux refuses PDF attachments.

Claude Code โ€” Audio attachments:

Audio file attachments are not supported by this agent.

Codex โ€” Audio attachments:

Use WAV, MP3, M4A, WebM or Ogg files with a model that declares audio input.

Cursor โ€” Audio attachments:

Audio file attachments are not supported by this agent.

GitHub Copilot โ€” Audio attachments:

Audio file attachments are not supported by this agent.

Kilo โ€” Audio attachments:

Use WAV, MP3, AAC, Ogg, FLAC or WebM with a Google model that accepts audio.

OpenCode โ€” Audio attachments:

Use WAV, MP3, AAC, Ogg, FLAC or WebM with a Google model that accepts audio.

Goose โ€” Audio attachments:

Audio file attachments are not supported by this agent.

Pi โ€” Audio attachments:

Audio file attachments are not supported by this agent.

Reasonix โ€” Audio attachments:

Audio file attachments are not supported by this agent.

ZCode โ€” Audio attachments:

Audio file attachments are not supported by this agent.

Codewhale โ€” Audio attachments:

Audio file attachments are not supported by this agent.

Kimi Code โ€” Audio attachments:

Audio file attachments are not supported by this agent.

MiMo Code โ€” Audio attachments:

Use WAV, MP3, M4A, Ogg or FLAC with a model that accepts audio.

Qwen Code โ€” Audio attachments:

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.

Oh My Pi โ€” Audio attachments:

Audio file attachments are not supported by this agent.

Grok Build โ€” Audio attachments:

Audio file attachments are not supported by this agent.

Kiro โ€” Audio attachments:

Audio file attachments are not supported by this agent.

Amp โ€” Audio attachments:

Audio file attachments are not supported by this agent.

Cline โ€” Audio attachments:

Audio file attachments are not supported by this agent.

CodeBuddy Code โ€” Audio attachments:

Audio files are verified through the native OpenAI-compatible model route, with or without a text prompt.

Junie โ€” Audio attachments:

Audio file attachments are not supported by this agent.

Letta Code โ€” Audio attachments:

Audio file attachments are not supported by this agent.

Dirac โ€” Audio attachments:

Audio file attachments are not supported by this agent.

Qoder CLI โ€” Audio attachments:

Audio file attachments are not supported by this agent.

Factory Droid โ€” Audio attachments:

Audio file attachments are not supported by this agent.

Fast Agent โ€” Audio attachments:

Use WAV, MP3, AAC, Ogg, FLAC or WebM with a Google model. Native Commands still requires Bypass Permissions.

Command Code โ€” Audio attachments:

Audio file attachments are not supported by this agent.

DeepSeek Harness โ€” Audio attachments:

Audio file attachments are not supported by this agent.

Gemini CLI โ€” Audio attachments:

Audio files can be attached with or without a text prompt. WAV and FLAC are verified.

Muse Code โ€” Audio attachments:

Audio file attachments are not supported by this agent.

Claude Code โ€” Other binary attachments:

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 โ€” Other binary attachments:

Codex has no native input type for other binary files. Audio recordings have their own feature row.

Cursor โ€” Other binary attachments:

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.

GitHub Copilot โ€” Other binary attachments:

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 โ€” Other binary attachments:

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 โ€” Other binary attachments:

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 โ€” Other binary attachments:

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 โ€” Other binary attachments:

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 โ€” Other binary attachments:

Reasonix saves each binary attachment as a file that its tools can read.

ZCode โ€” Other binary attachments:

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 โ€” Other binary attachments:

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 โ€” Other binary attachments:

Kimi Code can read only text files, images, and videos. Its tools refuse other binary files, so LeapMux refuses a binary attachment.

MiMo Code โ€” Other binary attachments:

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 โ€” Other binary attachments:

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 โ€” Other binary attachments:

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 โ€” Other binary attachments:

Kiro reads Word and Excel documents. Its native conversation keeps at most five distinct documents.

Amp โ€” Other binary attachments:

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 โ€” Other binary attachments:

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 โ€” Other binary attachments:

Junie documents image input only, so LeapMux refuses a binary file that is not an image.

Letta Code โ€” Other binary attachments:

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 โ€” Other binary attachments:

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 โ€” Other binary attachments:

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 โ€” Other binary attachments:

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 โ€” Other binary attachments:

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 โ€” Other binary attachments:

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 โ€” Other binary attachments:

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.

Gemini CLI โ€” Other binary attachments:

Verified with MP4 video files.

Muse Code โ€” Other binary attachments:

Muse MSP input accepts text and images only; its media/upload route carries video alone. LeapMux refuses binary attachments.

Junie โ€” Thinking in the transcript:

Junie 26.9.22 does not send the reasoning that its model returns, so the transcript shows no thinking. The answer still appears.

Command Code โ€” Thinking in the transcript:

LeapMux shows the thinking text that Command Code reports for a turn.

DeepSeek Harness โ€” Thinking in the transcript:

DeepSeek Harness sends reasoning as its own block in the assistant message, and LeapMux shows it in the transcript.

Gemini CLI โ€” Thinking in the transcript:

LeapMux shows the thoughts of the model as a separate row. The row stays after a reload.

Cursor โ€” Steer mid-turn:

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.

Goose โ€” Steer mid-turn:

A message you send while the turn runs reaches the turn immediately, through Goose’s own steering request.

ZCode โ€” Steer mid-turn:

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 โ€” Steer mid-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.

Amp โ€” Steer mid-turn:

A new Amp conversation offers steering after its first reply supplies a native thread ID.

CodeBuddy Code โ€” Steer mid-turn:

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 โ€” Steer mid-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 โ€” Steer mid-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 โ€” Steer mid-turn:

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 โ€” Steer mid-turn:

DeepSeek Harness adds new input to the running turn, and the next model request includes it.

Gemini CLI โ€” Steer mid-turn:

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 โ€” Agent questions:

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 โ€” Agent questions:

Cursor accepts selected answers only.

GitHub Copilot โ€” Agent questions:

Copilot asks one question per request.

Goose โ€” Agent questions:

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.

Reasonix โ€” Agent questions:

Choose an offered answer to continue. Canceling the question ends the turn.

Amp โ€” Agent questions:

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 โ€” Agent questions:

Cline asks one question at a time, with two to five options.

CodeBuddy Code โ€” Agent questions:

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 โ€” Agent questions:

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 โ€” Agent questions:

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 โ€” Agent questions:

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 โ€” Agent questions:

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 โ€” Agent questions:

Command Code’s JSON-RPC mode withholds its question tool and has no route for an answer, so no question banner appears.

DeepSeek Harness โ€” Agent questions:

DeepSeek Harness asks questions through its question tool. LeapMux shows the question and returns your answer to the model.

Gemini CLI โ€” Agent questions:

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 โ€” Context usage:

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.

Codewhale โ€” Context usage:

The Context card shows CodeWhale’s own estimate of the whole context and its window, not the token counts of a single request.

Qoder CLI โ€” Context usage:

Qoder reports context use as a ratio. LeapMux shows the percentage in Agent info and shows no token totals when Qoder sends none.

Command Code โ€” Context usage:

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.

DeepSeek Harness โ€” Context usage:

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.

Gemini CLI โ€” Context usage:

Agent info shows the token counts that Gemini CLI reports for the last request. It does not add up earlier turns.

Muse Code โ€” Context usage:

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 โ€” Compaction notice:

Cursor 2026.09.28 reports no finished compaction over the connection that LeapMux uses, so LeapMux shows no compaction notice.

Goose โ€” Compaction notice:

Goose reports a finished compaction, and LeapMux shows the notice. The next model request uses the new summary.

Codewhale โ€” Compaction notice:

CodeWhale 0.10.0 reports a completed compaction. LeapMux shows one notice that states whether the compaction was manual or automatic.

MiMo Code โ€” Compaction notice:

MiMo Code reports compaction when it starts and when it ends. LeapMux shows one notice, with the summary, when it ends.

Amp โ€” Compaction notice:

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 โ€” 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 โ€” Compaction notice:

Junie 26.9.22 sends no compaction event. Its /compress command only acknowledges the request, so the transcript shows no compaction notice.

Dirac โ€” Compaction notice:

After Dirac condenses the conversation, the chat shows a Conversation Condensed notice.

Qoder CLI โ€” Compaction 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 โ€” Compaction 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.

Command Code โ€” Compaction 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.

DeepSeek Harness โ€” Compaction notice:

LeapMux shows a notice when DeepSeek Harness finishes a compaction.

Gemini CLI โ€” Compaction notice:

Gemini CLI compacts its context on its own, but it does not report this to LeapMux, so the chat shows no notice.

Muse Code โ€” Compaction 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).

Codex โ€” Manual compaction:

After compaction, Codex keeps your earlier prompts in the next request. It replaces its earlier answers with a summary.

Cursor โ€” Manual compaction:

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.

GitHub Copilot โ€” Manual compaction:

After compaction, Copilot removes the older turns. Its summary can quote your earlier prompts, so their text can remain.

Reasonix โ€” Manual compaction:

Reasonix 2.53.1 sends /compact to the model as ordinary text over the connection that LeapMux uses.

Amp โ€” Manual compaction:

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 โ€” Manual compaction:

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.

CodeBuddy Code โ€” Manual compaction:

/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 โ€” Manual compaction:

Junie 26.9.22 acknowledges /compress but makes no summary request. The next requests still carry the older work.

Letta Code โ€” Manual compaction:

Compaction cannot be interrupted once it starts.

Dirac โ€” Manual compaction:

Type /smol to make Dirac condense its context. Dirac sends the condensed context in its next request to the model.

Qoder CLI โ€” Manual compaction:

/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 โ€” Manual compaction:

Fast Agent offers /compact only in its own terminal interface. Over the connection that LeapMux uses, it answers Unknown command: /compact.

Command Code โ€” Manual compaction:

A LeapMux compaction command makes Command Code summarize the session through an official mod, and the next turn uses the summary.

DeepSeek Harness โ€” Manual compaction:

A LeapMux compaction command runs the native /compact of DeepSeek Harness, and the next model request uses the new summary.

Gemini CLI โ€” Manual compaction:

Gemini CLI offers /compress only in its own terminal interface. The mode that LeapMux uses has no compaction command.

Muse Code โ€” Manual compaction:

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 โ€” Model context on resume:

Cursor keeps the conversation on its own servers. LeapMux reopens the same Cursor conversation, so earlier turns stay available to the model.

Cline โ€” Model context on resume:

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 โ€” Model context on resume:

Dirac restores model context from a saved native task, including an incomplete task.

Command Code โ€” Model context on resume:

After LeapMux reopens a session, Command Code uses the earlier conversation in its next model request.

DeepSeek Harness โ€” Model context on resume:

After LeapMux reopens a session, the next model request of DeepSeek Harness holds the earlier prompt and answer.

Gemini CLI โ€” Model context on resume:

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 โ€” Rate-limit state:

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 โ€” Rate-limit state:

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.

GitHub Copilot โ€” Rate-limit state:

Agent info shows the used and remaining quota that Copilot reports for each of its resources.

Kilo โ€” Rate-limit state:

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 โ€” Rate-limit state:

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 โ€” Rate-limit state:

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 โ€” Rate-limit state:

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 โ€” Rate-limit state:

Reasonix reports no quota window or reset time to LeapMux, so Agent info shows no rate limit.

ZCode โ€” Rate-limit state:

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 โ€” Rate-limit state:

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.

Kimi Code โ€” Rate-limit state:

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 โ€” Rate-limit state:

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 โ€” Rate-limit state:

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 โ€” Rate-limit state:

Oh My Pi reports no quota or rate-limit window to its client, so Agent info shows none.

Grok Build โ€” Rate-limit state:

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.

Kiro โ€” Rate-limit state:

Agent info shows Kiroโ€™s plan usage and billing-cycle reset date. The quota refreshes after each turn.

Amp โ€” Rate-limit state:

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 โ€” Rate-limit state:

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 โ€” Rate-limit state:

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 โ€” Rate-limit state:

Junie reports its quota only as text from its /stats command, not as quota data. Agent info therefore shows no quota.

Letta Code โ€” Rate-limit state:

Quota windows are available for connected ChatGPT subscriptions. API-key models do not report subscription quota through this route.

Dirac โ€” Rate-limit state:

Dirac reports no quota window, use, or reset time, so Agent info shows no quota.

Qoder CLI โ€” Rate-limit state:

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 โ€” Rate-limit state:

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 โ€” Rate-limit state:

Fast Agent reports no quota window, use, or reset time, so Agent info shows no quota.

Command Code โ€” Rate-limit state:

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 โ€” Rate-limit state:

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 โ€” Rate-limit state:

Gemini CLI reports only token counts over ACP. It reports no quota window, use, or reset time to LeapMux.

Muse Code โ€” Rate-limit state:

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 โ€” Model:

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 โ€” Model:

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.

Command Code โ€” Model:

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.

DeepSeek Harness โ€” Model:

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 โ€” Model:

Gemini CLI 0.62.0 changes the model of a running session when you select another model.

Muse Code โ€” Model:

The config model catalog lists the bundled Spark routes beside the pinned model, so a native switch between them reaches the model request.

Claude Code โ€” Reasoning effort:

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 โ€” Reasoning effort:

Cursor offers each reasoning effort as a variant in the model list. LeapMux has no separate Effort selector for Cursor.

GitHub Copilot โ€” Reasoning effort:

Copilot offers Reasoning effort only for models that offer levels.

ZCode โ€” Reasoning effort:

ZCode offers a reasoning level only when the chosen model offers levels.

Kiro โ€” Reasoning effort:

Kiro offers Reasoning effort only for a model that supports effort levels.

Amp โ€” Reasoning effort:

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.

Cline โ€” Reasoning effort:

LeapMux offers Reasoning effort for Cline only when the chosen model has effort levels.

Letta Code โ€” Reasoning effort:

Available effort levels depend on the model.

Factory Droid โ€” Reasoning effort:

Factory Droid offers the reasoning levels none, low, medium, and high.

Fast Agent โ€” Reasoning effort:

Fast Agent reports no reasoning-effort setting, so LeapMux shows no effort selector.

Command Code โ€” Reasoning effort:

Command Code offers the effort levels that the selected model supports, from low to max.

DeepSeek Harness โ€” Reasoning effort:

The effort selector sets the reasoning effort of the next request. The Off choice turns thinking off.

Gemini CLI โ€” Reasoning effort:

Gemini CLI offers no reasoning-effort setting in the mode that LeapMux uses. Its model configuration fixes the thinking budget.

Pi โ€” Mode:

Pi has no mode setting that LeapMux can select. The plan extension uses its own /plan command.

ZCode โ€” Mode:

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 โ€” Mode:

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 โ€” Mode:

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 โ€” Mode:

Letta Code offers Standard, Accept Edits, Unrestricted, and Strict modes. A mode change applies to the running agent.

Factory Droid โ€” Mode:

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.

Fast Agent โ€” Mode:

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.

Command Code โ€” Mode:

LeapMux offers three of the five Command Code modes: Default, Plan, and Bypass. A mode change reopens the same session.

DeepSeek Harness โ€” Mode:

LeapMux offers the Act and Plan modes of DeepSeek Harness.

Gemini CLI โ€” Mode:

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 โ€” Permission prompts:

Codex’s Allow as menu offers Once, Session, Command rule and Host rule.

GitHub Copilot โ€” Permission prompts:

If the Copilot CLI refuses LeapMux’s default permission mode, LeapMux opens the session in Manual mode.

Pi โ€” Permission prompts:

Pi does not ask for approval before a tool call, so LeapMux shows no approval prompt. Upstream closed a request for a permission system.

ZCode โ€” Permission prompts:

The Always choice in a ZCode permission prompt saves a permission rule for the project.

Codewhale โ€” Permission prompts:

CodeWhale denies an approval request that nobody answers within 300 seconds.

Kiro โ€” Permission prompts:

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.

Amp โ€” Permission prompts:

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.

Qoder CLI โ€” Permission prompts:

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 โ€” Permission prompts:

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 โ€” Permission prompts:

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.

DeepSeek Harness โ€” Permission prompts:

LeapMux shows a tool approval question from DeepSeek Harness and returns your allow or deny decision to the agent.

Gemini CLI โ€” Permission prompts:

In default mode, Gemini CLI asks before it changes a file. The file stays unchanged until you decide.

Codex โ€” Smart permissions shortcut:

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 โ€” Smart permissions shortcut:

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.

GitHub Copilot โ€” Smart permissions shortcut:

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 โ€” Smart permissions shortcut:

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 โ€” Smart permissions 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 โ€” Smart permissions shortcut:

Pi has no permission modes, so LeapMux has no Smart preset to select. See the Pi security documentation.

Reasonix โ€” Smart permissions shortcut:

Smart selects Reasonix Auto. Ordinary tools run while configured ask and deny rules and protected decisions still apply.

ZCode โ€” Smart permissions shortcut:

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 โ€” Smart permissions 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.

Qwen Code โ€” Smart permissions 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 โ€” Smart permissions shortcut:

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 โ€” Smart permissions shortcut:

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 โ€” Smart permissions shortcut:

Amp has no safety-assisted permission preset for LeapMux to select. LeapMux offers the Ask and Allow All modes for Amp.

Cline โ€” Smart permissions shortcut:

Cline has no safety-assisted permission preset for LeapMux to select. LeapMux offers the Plan, Act, and Auto-approve modes for Cline.

CodeBuddy Code โ€” Smart permissions shortcut:

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.

Junie โ€” Smart permissions shortcut:

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 โ€” Smart permissions shortcut:

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 โ€” Smart permissions shortcut:

Dirac has no safety-assisted permission preset, so LeapMux offers no Smart shortcut.

Factory Droid โ€” Smart permissions shortcut:

Smart selects Droid Auto (Medium). It automatically approves low- and medium-risk operations; high-risk commands still ask for approval.

Fast Agent โ€” Smart permissions shortcut:

Fast Agent has no safety-assisted permission preset, so LeapMux offers no Smart shortcut.

Command Code โ€” Smart permissions shortcut:

Command Code has no safety-assisted permission mode, so LeapMux offers no Smart permissions shortcut. See the permissions guide for its modes.

DeepSeek Harness โ€” Smart permissions shortcut:

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 โ€” Smart permissions shortcut:

Gemini CLI has no safety-assisted permission preset. Its modes are default, autoEdit, yolo, and plan.

Muse Code โ€” Smart permissions shortcut:

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.

Codex โ€” Bypass permissions shortcut:

Bypass also approves the requests that work started before the switch still sends.

Cursor โ€” Bypass permissions shortcut:

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.

Kilo โ€” Bypass permissions shortcut:

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.

OpenCode โ€” Bypass permissions shortcut:

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 โ€” Bypass permissions shortcut:

Pi has no permission modes. It runs every tool without asking, so there is no mode to select. See the Pi security documentation.

Reasonix โ€” Bypass permissions shortcut:

Bypass skips ordinary tool prompts. Reasonix still refuses file writes outside its configured workspace scope, and protected decisions can still require approval.

Junie โ€” Bypass permissions shortcut:

Bypass selects Junie’s Brave On mode, which executes potentially sensitive actions without approval.

Qoder CLI โ€” Bypass permissions shortcut:

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.

Factory Droid โ€” Bypass permissions shortcut:

Bypass selects Droid Auto (High). It approves ordinary tools at every risk level while preserving native protected decisions.

Fast Agent โ€” Bypass permissions shortcut:

Changing this setting restarts Fast Agent and stops any active turn. Saved conversations resume with the selected permission behavior.

Command Code โ€” Bypass permissions shortcut:

The Bypass shortcut starts Command Code in its bypass mode, which runs tools without prompts. In Default mode the agent blocks file changes.

DeepSeek Harness โ€” Bypass permissions shortcut:

The Bypass shortcut selects the Full access preset of DeepSeek Harness. It removes the file sandbox and never asks for approval.

Gemini CLI โ€” Bypass permissions shortcut:

The Bypass permissions shortcut selects the yolo mode of Gemini CLI. Tools then run without permission prompts.

Goose โ€” Plan mode:

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 โ€” Plan mode:

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 โ€” Plan mode:

Amp has no plan mode, so LeapMux offers none for Amp.

Junie โ€” Plan mode:

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 โ€” Plan mode:

Letta Code 0.34 has no plan mode, because Letta removed plan mode and its plan tools.

Factory Droid โ€” Plan mode:

Factory Droid plans in its Spec mode. Droid leaves Spec mode when you approve the plan.

Fast Agent โ€” Plan mode:

Fast Agent has no planning mode, so LeapMux shows no Plan selector.

Command Code โ€” Plan mode:

Plan mode is a launch setting of Command Code. LeapMux changes it by reopening the same session.

DeepSeek Harness โ€” Plan mode:

Plan mode uses the native /plan command of DeepSeek Harness.

Gemini CLI โ€” Plan mode:

You can switch Gemini CLI to plan mode. It then uses read-only tools, and the mode stays after a reload.

Muse Code โ€” Plan mode:

The MSP schema holds no plan method, item, or model tool, and the binary offers no plan entry tool.

Kilo โ€” Plan approval banner:

Kilo 7.8.1 ends a plan turn with a plan-ready result and asks for no approval. Switch the mode back to Code to start the work.

OpenCode โ€” Plan approval banner:

OpenCode 1.18.34 sends a finished plan without asking for approval. Its plan-exit question exists only for its own terminal client in experimental plan mode. Switch the mode back to Build to start the work.

Goose โ€” Plan approval banner:

Goose sends no plan for approval. Its Chat mode refuses tools but creates no plan approval request, so LeapMux shows no plan banner.

Codewhale โ€” Plan approval banner:

CodeWhale’s plan mode refuses edits and commands, but CodeWhale sends no plan for approval, so LeapMux shows no plan banner. Switch the mode back to Agent to start the work.

Oh My Pi โ€” Plan approval banner:

The plan mode of Oh My Pi starts only in its terminal app, so no plan reaches LeapMux for approval. Upstream tracks this in oh-my-pi#8171 and oh-my-pi#9230.

Kiro โ€” Plan approval banner:

Kiro’s Plan agent hands the plan to its Default mode and starts the work itself. It sends no approval request, so LeapMux shows no plan banner. See Kiro built-in agents.

Amp โ€” Plan approval banner:

Amp has no plan mode and sends no plan for approval, so LeapMux shows no plan banner for Amp.

Cline โ€” Plan approval banner:

Cline discusses the plan in the chat first. Tell Cline that the plan is good, and the approval banner then appears.

Junie โ€” Plan approval banner:

Junie asks for the plan review as a separate request, which LeapMux shows as the plan banner. Approving the plan ends Plan mode and fills the to-do list.

Letta Code โ€” Plan approval banner:

Letta Code 0.34 asks for no plan approval, because it has no plan mode. Letta removed plan mode and its plan tools.

Dirac โ€” Plan approval banner:

When YOLO is off, Dirac shows its plan and ends the turn without an approval request, so LeapMux shows no Approve button.

Factory Droid โ€” Plan approval banner:

Factory Droid asks you to approve a plan when it leaves Spec mode, and LeapMux shows that plan in the banner. You approve or reject the plan there.

Fast Agent โ€” Plan approval banner:

Fast Agent has no plan approval step, so LeapMux shows no plan approval banner.

Command Code โ€” Plan approval banner:

Command Code’s JSON-RPC mode has no route for a plan decision. Plan mode still returns a read-only plan, but no approval banner appears.

DeepSeek Harness โ€” Plan approval banner:

LeapMux shows the plan that DeepSeek Harness proposes in a banner and returns your approval or rejection to the agent.

Gemini CLI โ€” Plan approval banner:

Gemini CLI asks for approval of a plan file. LeapMux shows the whole plan and lets you approve or reject it.

Muse Code โ€” Plan approval banner:

The MSP schema holds no plan method, item, or model tool, so no plan review can arrive.

Claude Code โ€” Session goal: set and clear:

LeapMux offers goals only when the Claude Code build supports the /goal command. See the /goal documentation.

Cursor โ€” Session goal: set and clear:

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.

Kilo โ€” Session goal: set and clear:

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 โ€” Session goal: set and clear:

OpenCode 1.18.34 has no session goal, so it has no way to set or clear one (open upstream request).

Goose โ€” Session goal: set and clear:

Needs a Goose CLI that lists the /goal command. LeapMux then sets or clears the goal by sending that command.

Kimi Code โ€” Session goal: set and clear:

Kimi Code takes a goal only while its server reports the goal feature as active.

Qwen Code โ€” Session goal: set and clear:

Needs a Qwen Code build that offers the /goal command.

Grok Build โ€” Session goal: set and clear:

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 โ€” Session goal: set and clear:

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 โ€” Session goal: set and clear:

Amp has no built-in session goal. Its documentation shows a goal command only as an example plugin that users write themselves.

Cline โ€” Session goal: set and clear:

Cline has no session goal, so LeapMux has no goal to set or clear for Cline.

CodeBuddy Code โ€” Session goal: set and clear:

CodeBuddy Code offers no goal control through its stream-JSON protocol, which LeapMux uses.

Junie โ€” Session goal: set and clear:

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 โ€” Session goal: set and clear:

Letta Code has no standing goal feature, so you cannot set or clear a goal for it.

Dirac โ€” Session goal: set and clear:

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 โ€” Session goal: set and clear:

Factory Droid has no standing goal feature, so you cannot set or clear a goal for it.

Fast Agent โ€” Session goal: set and clear:

Fast Agent has no standing goal feature, so the Goals sidebar cannot set or clear a goal.

Command Code โ€” Session goal: set and clear:

Command Code runs /goal in its terminal interface. Its JSON-RPC mode has no goal operation, so LeapMux cannot set or clear a goal.

DeepSeek Harness โ€” Session goal: set and clear:

Setting a goal starts rounds of work in DeepSeek Harness. Clearing the goal stops further rounds.

Gemini CLI โ€” Session goal: set and clear:

Gemini CLI has no standing goal feature, so the Goals sidebar cannot set or clear a goal.

Muse Code โ€” Session goal: set and clear:

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 โ€” Session goal: pause and resume:

Claude Code can set and clear a goal. It has no command to pause or resume a goal. See the /goal documentation.

Cursor โ€” Session goal: pause and resume:

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.

Kilo โ€” Session goal: pause and resume:

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 โ€” Session goal: pause and resume:

OpenCode 1.18.34 has no session goal, so it has nothing to pause or resume (open upstream request).

Goose โ€” Session goal: pause and resume:

Goose’s /goal command can set a goal or clear it. Goose has no pause or resume for a goal.

Reasonix โ€” Session goal: pause and resume:

Pause prevents further goal rounds. The current round continues until it ends or you interrupt it. Resume continues the retained objective.

Codewhale โ€” Session goal: pause and resume:

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 โ€” Session goal: pause and resume:

Kimi Code can pause and resume a goal only while its server reports the goal feature as active.

MiMo Code โ€” Session goal: pause and resume:

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).

Qwen Code โ€” Session goal: pause and resume:

Needs the /goal command. A pause takes effect at once and stops the running goal round.

Grok Build โ€” Session goal: pause and resume:

Needs the /goal command. A pause takes effect after the running goal round ends.

Kiro โ€” Session goal: pause and resume:

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 โ€” Session goal: pause and resume:

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 โ€” Session goal: pause and resume:

Cline has no session goal, so LeapMux has no goal to pause or resume for Cline.

CodeBuddy Code โ€” Session goal: pause and resume:

CodeBuddy Code offers no goal control through its stream-JSON protocol, which LeapMux uses.

Junie โ€” Session goal: pause and resume:

Junie 26.9.22 can clear a goal but offers no way to pause or resume it.

Letta Code โ€” Session goal: pause and resume:

Letta Code has no standing goal feature, so you cannot pause or resume a goal for it.

Dirac โ€” Session goal: pause and resume:

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 โ€” Session goal: pause and resume:

Factory Droid has no standing goal feature, so you cannot pause or resume a goal for it.

Fast Agent โ€” Session goal: pause and resume:

Fast Agent has no standing goal feature, so the Goals sidebar cannot pause or resume a goal.

Command Code โ€” Session goal: pause and resume:

Command Code runs /goal in its terminal interface. Its JSON-RPC mode has no goal operation, so LeapMux cannot pause or resume a goal.

DeepSeek Harness โ€” Session goal: pause and resume:

Pause stops the running round of a DeepSeek Harness goal, and Resume starts the next round.

Gemini CLI โ€” Session goal: pause and resume:

Gemini CLI has no standing goal feature, so the Goals sidebar cannot pause or resume a goal.

Muse Code โ€” Session goal: pause and resume:

A parked goal offers no pause (it is already paused); its resume runs a fresh native goal turn and parks again once it settles.

Codex โ€” To-do sidebar:

Codex shows its to-do list only when its update_plan tool is on in the Codex configuration. The tool never runs in Plan mode.

Amp โ€” To-do sidebar:

Amp’s current modes offer no to-do tool, so Amp reports no to-do list for LeapMux to show.

Cline โ€” To-do sidebar:

Cline 3.0.68 has no active to-do list. Its Agenda to-do tool is turned off while Cline reworks the Agenda, so LeapMux shows no to-dos for Cline.

Junie โ€” To-do sidebar:

The to-do list fills after you approve the plan, not while Junie plans.

Dirac โ€” To-do sidebar:

The plan entries of Dirac fill the to-do sidebar with their statuses. Dirac has no separate to-do tool.

Fast Agent โ€” To-do sidebar:

The default coding agent of Fast Agent has no to-do tool and sends no plan updates. Only its separate Iterative Planner agent sends plan updates, and LeapMux starts the coding agent.

Command Code โ€” To-do sidebar:

LeapMux shows the tasks that Command Code creates and updates in the to-do sidebar.

DeepSeek Harness โ€” To-do sidebar:

LeapMux shows the task list that DeepSeek Harness writes, with the status of each task.

Gemini CLI โ€” To-do sidebar:

The to-do list of Gemini CLI fills the sidebar, and each update replaces the whole list. The sidebar shows pending, in progress, completed, and blocked items. LeapMux treats a cancelled item as deleted.

Cline โ€” Background tasks sidebar:

A Cline subagent runs its tools without asking, so approve a spawn only for a task that you trust. Cline hooks and plugins run only in Auto-approve mode, and Cline runs them without asking.

Junie โ€” Background tasks sidebar:

LeapMux shows Junie subagents in the Background tasks sidebar. Junie reports no stable status for a background shell process, so LeapMux shows such a command as a tool card with no sidebar row.

Command Code โ€” Background tasks sidebar:

LeapMux lists the child agents and background commands that Command Code reports in the Background tasks sidebar.

DeepSeek Harness โ€” Background tasks sidebar:

LeapMux lists the child agents that DeepSeek Harness runs, with their status, in the Background tasks sidebar.

Gemini CLI โ€” Background tasks sidebar:

Each Gemini CLI subagent appears as a row in the Background tasks sidebar. The row shows complete when Gemini CLI reports the subagent complete.

Muse Code โ€” Background tasks sidebar:

A yielded bash command reports background_running through its result with no registry item; the workflow row is the background process the sidebar draws.

Letta Code โ€” MCP tool execution:

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 โ€” MCP tool execution:

Dirac has no MCP support. It ignores the MCP server list that LeapMux sends, so no MCP tool reaches its model.

Command Code โ€” MCP tool execution:

Command Code runs MCP tools, and their results reach the next model request.

DeepSeek Harness โ€” MCP tool execution:

DeepSeek Harness calls MCP tools and uses their results.

Gemini CLI โ€” MCP tool execution:

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 โ€” MCP input request:

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 โ€” MCP input request:

Kilo 7.8.1 declares no MCP input capability, so an MCP server cannot ask it for input (open upstream request).

OpenCode โ€” MCP input 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 โ€” MCP input request:

Pi’s MCP client does not support input requests from MCP servers. Upstream closed the request as not planned.

ZCode โ€” MCP input request:

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 โ€” MCP input request:

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 โ€” MCP input request:

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 โ€” MCP input request:

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 โ€” MCP input request:

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 โ€” MCP input request:

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 โ€” MCP input request:

Amp does not support MCP input requests, so an MCP server cannot ask the user for input through Amp.

Cline โ€” MCP input request:

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 โ€” MCP input request:

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 โ€” MCP input request:

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 โ€” MCP input request:

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 โ€” MCP input request:

Dirac has no MCP support, so no MCP server can ask you for input.

Factory Droid โ€” MCP input request:

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 โ€” MCP input request:

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 โ€” MCP input request:

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.

DeepSeek Harness โ€” MCP input request:

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 โ€” MCP input request:

Gemini CLI does not tell MCP servers that it can show input forms, so no MCP server asks you for input.

Muse Code โ€” MCP input request:

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 โ€” Code execution:

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 โ€” Code execution:

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 โ€” Code execution:

Cursor 2026.09.28 has no tool that runs code that the model writes, apart from ordinary shell commands.

GitHub Copilot โ€” Code execution:

Copilot CLI has no tool that runs model-written code. Its 15 built-in tools cover shell, files, web fetch and agents.

Kilo โ€” Code execution:

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.

OpenCode โ€” Code execution:

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.

Goose โ€” Code execution:

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 โ€” Code execution:

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.

Reasonix โ€” Code execution:

Enable agent.code_mode = true in Reasonix to use its Starlark executor. Scripts can call agent tools.

ZCode โ€” Code execution:

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 โ€” Code execution:

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 โ€” Code execution:

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 โ€” Code execution:

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).

Qwen Code โ€” Code execution:

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 โ€” Code execution:

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 โ€” Code execution:

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 โ€” Code execution:

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 โ€” Code execution:

Amp executes code through its remote service.

Cline โ€” Code execution:

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 โ€” Code execution:

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 โ€” Code execution:

Junie 26.9.22 has no tool that runs a script. It offers a shell tool, file tools, and subagents.

Letta Code โ€” Code execution:

Letta Code executes JavaScript through its native Workflow tool.

Dirac โ€” Code execution:

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 CLI โ€” Code execution:

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 โ€” Code execution:

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.

Fast Agent โ€” Code execution:

The default tools of Fast Agent include a shell but no tool that runs model-written code in a chosen language.

Command Code โ€” Code execution:

Command Code runs JavaScript through its native codemode tool.

DeepSeek Harness โ€” Code execution:

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 โ€” Code execution:

Gemini CLI has a shell tool but no tool that runs model-written code in a chosen language.

Muse Code โ€” Code execution:

The workflow tool runs deterministic JavaScript in the native host; children submit through submit_result.

Claude Code โ€” Output file paths:

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 โ€” Output file paths:

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 โ€” Output file paths:

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.

GitHub Copilot โ€” Output file paths:

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 โ€” Output file paths:

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 โ€” Output file paths:

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 โ€” Output file paths:

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.

Reasonix โ€” Output file paths:

Large tool results show the path to the native saved output. The result row keeps Reasonix’s preview.

ZCode โ€” Output file paths:

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.

Codewhale โ€” Output file paths:

When CodeWhale reports a file that holds a saved tool output, LeapMux shows its path before the original preview. LeapMux never reads that file.

Kimi Code โ€” Output file paths:

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 โ€” Output file paths:

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 โ€” Output file paths:

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 โ€” Output file paths:

Oh My Pi identifies saved tool output with an artifact ID, not a file path, so LeapMux shows no output path.

Grok Build โ€” Output file paths:

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 โ€” Output file paths:

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 โ€” Output file paths:

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 โ€” Output file paths:

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 โ€” Output file paths:

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 โ€” Output file paths:

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 โ€” Output file paths:

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.

Dirac โ€” Output file paths:

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 CLI โ€” Output file paths:

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 โ€” Output file paths:

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 โ€” Output file paths:

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 โ€” Output file paths:

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 โ€” Output file paths:

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.

Reasonix โ€” Images in tool results:

Tool results show the saved image and retain it after reload.

ZCode โ€” Images in tool results:

ZCode returns a tool result as text only. LeapMux still shows the picture, because ZCode saves it with the tool call.

Codewhale โ€” Images in tool results:

CodeWhale reports the image that a tool returns. LeapMux checks the image and shows it in the tool row.

Qwen Code โ€” Images in tool results:

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.

Amp โ€” Images in tool results:

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.

Cline โ€” Images in tool results:

LeapMux shows images from Cline file reads and opens them in the image viewer.

CodeBuddy Code โ€” Images in tool results:

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 โ€” Images in tool results:

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 โ€” Images in tool results:

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 โ€” Images in tool results:

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.

Command Code โ€” Images in tool results:

LeapMux shows an image that an MCP tool returns. Command Code compresses an image that it reads, so LeapMux shows the compressed picture.

DeepSeek Harness โ€” Images in tool results:

LeapMux shows an image that the read_image tool returns, taken from the files that DeepSeek Harness saves.

Gemini CLI โ€” Images in tool results:

When Gemini CLI reads an image file, LeapMux shows the image in the tool result. The image stays after a reload.

Muse Code โ€” Images in tool results:

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 โ€” Subagent transcript tab:

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.

Dirac โ€” Subagent transcript tab:

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.

Fast Agent โ€” Subagent transcript tab:

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.

Command Code โ€” Subagent transcript tab:

The child tab holds the prompt that Command Code gave the child and its final report. Command Code sends no full child transcript.

DeepSeek Harness โ€” Subagent transcript tab:

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.

Gemini CLI โ€” Subagent transcript tab:

Each Gemini CLI subagent opens its own tab. Gemini CLI links a subagent to its root session and not to its direct parent.

Cursor โ€” Subagent live transcript:

Cursor streams the messages of a subagent while it runs, and LeapMux shows them in the subagent tab.

Kilo โ€” Subagent live transcript:

The subagent tab shows the subagent’s own messages and tool calls while it runs, before its final report.

OpenCode โ€” Subagent live transcript:

The subagent tab shows the subagent’s own messages and tool calls while it runs, before its final report.

Goose โ€” Subagent live transcript:

LeapMux shows the tool calls of a Goose subagent while it runs. Goose sends no text from the subagent.

Pi โ€” Subagent live transcript:

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 โ€” Subagent live transcript:

Reasonix supplies a subagent’s report when the subagent ends. The subagent tab shows its prompt while it runs.

ZCode โ€” Subagent live transcript:

LeapMux shows the tool calls of a ZCode subagent while it runs. The subagent’s text arrives as the final report.

Codewhale โ€” Subagent live transcript:

LeapMux shows each message of a CodeWhale subagent when that message ends, with about half a second of lag.

Qwen Code โ€” Subagent live transcript:

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 โ€” Subagent live transcript:

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.

Cline โ€” Subagent live transcript:

LeapMux shows one running Cline subagent live. When two subagents run at the same time, their transcripts appear only when they finish.

Dirac โ€” Subagent live transcript:

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.

Fast Agent โ€” Subagent live transcript:

While a Fast Agent subagent runs, its tab shows the prompt. Fast Agent gives the full tool transcript only after the subagent ends.

Command Code โ€” Subagent live transcript:

While a child runs, its tab shows short activity notices from Command Code. It shows no child text and no full tool result.

DeepSeek Harness โ€” Subagent live transcript:

The child tab updates while the child works, including its tool activity, before its final report arrives.

Gemini CLI โ€” Subagent live transcript:

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 โ€” Send to a subagent:

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 โ€” Send to a subagent:

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 โ€” Send to a subagent:

Cursor announces each subagent with no input capability and takes no message for it. The subagent tab stays read-only while the subagent runs.

GitHub Copilot โ€” Send to a subagent:

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.

Kilo โ€” Send to a subagent:

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.

OpenCode โ€” Send to a subagent:

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 โ€” Send to a subagent:

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.

Pi โ€” Send to a subagent:

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 โ€” Send to a subagent:

Reasonix exposes no way to send a message to a running subagent. Its tab stays read-only.

ZCode โ€” Send to a subagent:

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 โ€” Send to a subagent:

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 โ€” Send to a subagent:

Kimi Code accepts a message that you type in the subagent tab while the subagent runs.

MiMo Code โ€” Send to a subagent:

MiMo Code accepts a message typed in the subagent tab while the subagent runs.

Qwen Code โ€” Send to a subagent:

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.

Grok Build โ€” Send to a subagent:

Send text with Steer while the subagent runs. Subagent attachments are not supported.

Kiro โ€” Send to a subagent:

Kiro offers no way to send a message to a running subagent, so the subagent tab is read-only.

Amp โ€” Send to a subagent:

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 โ€” Send to a subagent:

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 โ€” Send to a subagent:

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 โ€” Send to a subagent:

Junie offers no way to send a message to a running subagent, so the subagent tab is read-only.

Letta Code โ€” Send to a subagent:

Letta Code has no way to send a message to a running subagent, so its subagent tabs are read-only.

Dirac โ€” Send to a subagent:

Dirac subagents run inside the parent task and take no input from you, so the subagent tab is read-only.

Qoder CLI โ€” Send to a subagent:

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.

Factory Droid โ€” Send to a subagent:

You can type in a Factory Droid subagent tab while the subagent runs. Droid sends the message to that subagent.

Fast Agent โ€” Send to a subagent:

Fast Agent subagents take no input after they start, so the subagent tab is read-only.

Command Code โ€” Send to a subagent:

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.

DeepSeek Harness โ€” Send to a subagent:

A message typed in the child tab goes to that child agent, which keeps its earlier answers.

Gemini CLI โ€” Send to a subagent:

Gemini CLI subagents take no input from you, so the subagent tab is read-only.

Muse Code โ€” Send to a subagent:

Completed-child input requires a trusted workspace. Muse can reject a human follow-up after the parent gives a completed child another task.

Claude Code โ€” Interrupt a subagent:

The Interrupt control of a subagent tab stops that subagent. The parent session keeps running.

Cursor โ€” Interrupt a subagent:

Cursor stops only the parent turn. It has no request to stop one subagent, so the subagent tab has no Interrupt control.

GitHub Copilot โ€” Interrupt a subagent:

The Interrupt control of a subagent tab stops that subagent, and the parent session keeps running.

Kilo โ€” Interrupt a subagent:

The Interrupt control of a subagent tab stops that subagent, and the parent session keeps running.

OpenCode โ€” Interrupt a subagent:

The Interrupt control of a subagent tab stops that subagent, and the parent session keeps running.

Goose โ€” Interrupt a subagent:

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.

Pi โ€” Interrupt a subagent:

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 โ€” Interrupt a subagent:

Reasonix exposes no request that stops one subagent while its parent continues. The child tab has no Interrupt control.

ZCode โ€” Interrupt a subagent:

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 โ€” Interrupt a subagent:

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 โ€” Interrupt a subagent:

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 โ€” Interrupt a subagent:

Kiro offers no way to stop one subagent without its parent, so the subagent tab has no Interrupt control.

Amp โ€” Interrupt a subagent:

Amp can stop only a whole run, not one subagent. It exposes no handle for a subagent, so LeapMux cannot interrupt one alone.

Cline โ€” Interrupt a subagent:

Cline’s hub can stop only a whole run, not one subagent, so LeapMux cannot interrupt a subagent alone.

CodeBuddy Code โ€” Interrupt a subagent:

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 โ€” Interrupt a subagent:

Junie offers no way to stop one subagent without its parent, so the subagent tab has no Interrupt control.

Letta Code โ€” Interrupt a subagent:

Letta Code has no command that stops one subagent while its parent keeps running. You can interrupt only the parent agent.

Dirac โ€” Interrupt a subagent:

Dirac cannot stop one subagent alone, so the subagent tab offers no Interrupt.

Qoder CLI โ€” Interrupt a subagent:

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 โ€” Interrupt a subagent:

Factory Droid has no command that stops one subagent while its parent keeps running. You can interrupt only the parent agent.

Fast Agent โ€” Interrupt a subagent:

Fast Agent cannot stop one subagent alone, so the subagent tab offers no Interrupt.

Command Code โ€” Interrupt a subagent:

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.

DeepSeek Harness โ€” Interrupt a subagent:

Interrupt in the child tab stops that child. The parent receives a report that the child stopped, and the parent keeps running.

Gemini CLI โ€” Interrupt a subagent:

Gemini CLI cannot stop one subagent alone, so the subagent tab offers no Interrupt.

Claude Code โ€” Workflow grouping:

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 โ€” Workflow grouping:

Codex has no workflow feature that groups work. Each exec call stays a separate tool call.

Cursor โ€” Workflow grouping:

Cursor reports each subagent alone, with no workflow group. The Background tasks sidebar cannot show subagents under one workflow heading.

GitHub Copilot โ€” Workflow grouping:

Copilot 1.0.87 restricts its native factories and dynamic workflows. Both APIs refuse the tested session.

Kilo โ€” Workflow grouping:

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 โ€” Workflow grouping:

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 โ€” Workflow grouping:

Goose reports each subagent alone, with no workflow group. The Background tasks sidebar cannot show subagents under one workflow heading.

Pi โ€” Workflow grouping:

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 โ€” Workflow grouping:

Reasonix reports each subagent without a workflow group. The sidebar cannot place those subagents under one workflow heading.

ZCode โ€” Workflow grouping:

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 โ€” Workflow grouping:

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.

Qwen Code โ€” Workflow grouping:

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 โ€” Workflow grouping:

Oh My Pi has no workflow feature that groups work. It reports each subagent as a separate task.

Amp โ€” Workflow grouping:

Amp’s stream has no workflow structure. Each subagent call appears as its own row, so LeapMux groups none of them.

Junie โ€” Workflow grouping:

Junie reports each subagent as a separate row with no workflow grouping, so the Background tasks sidebar shows no workflow heading.

Letta Code โ€” Workflow grouping:

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 โ€” Workflow grouping:

Dirac reports each subagent on its own and sends no workflow group, so the sidebar lists the subagents as separate rows.

Qoder CLI โ€” Workflow grouping:

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 โ€” Workflow grouping:

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 โ€” Workflow grouping:

Fast Agent reports each subagent on its own and sends no workflow group, so the sidebar lists the subagents as separate rows.

Command Code โ€” Workflow grouping:

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.

DeepSeek Harness โ€” Workflow grouping:

The Background tasks sidebar groups the child agents of one DeepSeek Harness workflow under one heading.

Gemini CLI โ€” Workflow grouping:

Gemini CLI sends no workflow group for its subagents, so the sidebar lists each subagent as a separate row.

Muse Code โ€” Workflow grouping:

Workflow folds create one grouped row per child. A matching native subagent supplies its own session, transcript, and controls on that row.

Last updated on