Documentation

Working with Solus

How to get work done with Solus: summon an agent, shape its plan, review the diff, ship the PR. Each section is a short recipe; the full keybinding reference is at the end.

Updated August 14, 2026

Overview

Solus is the agent development environment (ADE), the best way to produce software with agents. On macOS it floats above whatever you're doing, one keystroke away; from any browser or your phone, the same workspace follows you. The agent's work comes back as things you act on: plans to approve, diffs to review, PRs to merge.

The whole product is one loop:

  • Summon. Press ⌥Space from any app, pick a project, and describe the change. See Getting Started.
  • Plan. For bigger work, have the agent draft a plan and mark it up before any code changes. See Working with Plans.
  • Review. Step through every touched file and send line-level feedback. See Diff Panel and Review Companion.
  • Ship. One action in the Git panel commits, pushes, and opens the pull request — message and description written for you — then merge it without leaving Solus. See Pull Requests.
  • Automate. Save the prompts you repeat and run them on a schedule. See Automations.

Everything else (Works, Design Mode, voice input, remote hosts) hangs off that loop. Use the sidebar to jump straight to a feature.

Getting Started

Press ⌥Space. The Solus panel appears above whatever you're doing; press it again to dismiss it. That one shortcut is the core habit.

Your first session

  • Pick a project. Press ⌘O and choose the directory the agent should work in.
  • Pick a permission mode. Press ⌥⇧Tab to cycle: Ask approves each action, Auto runs uninterrupted, Plan drafts a plan for your review first. Start with Ask; use Plan for anything non-trivial.
  • Prompt. Type what you want and press Enter. @ autocompletes files; attach files or screenshots from the input bar.
  • Watch it work. Tool calls and diff previews stream in. Keep typing. Follow-ups queue for the next turn.

Pill mode vs. editor mode

Two layouts; toggle with ⌥⇧E.

Pill · stay in flow

A compact strip at the bottom of your screen. Fire off a prompt, glance at progress, keep working.

Editor · go deep

The full workspace: sidebar, panes, diff panel, project panel. Review plans and diffs here.

Agents and models

Solus drives the Claude Code and Codex CLIs you already have installed. Cycle the agent with ⌥⇧G, the model with ⌥⇧M, or open the model / reasoning menu with ⌥⇧Z. Each tab can use a different agent and model.

Sessions & Tabs

Each tab is an independent session with its own project, agent, model, and permission mode, so a refactor, a bug fix, and a question can run at once.

  • Open and close sessions. ⌘T starts a new session in the current task, ⌘⇧N starts one without a task, and ⌘⇧W closes the current tab.
  • Move between tabs. ⌃Tab / ⌃⇧Tab cycle branch tabs; ⌥⇧N / ⌥⇧P move between sessions in a branch.
  • Fork a session. Press ⌥F to branch the conversation into a new tab that keeps all context so far. Explore two approaches from one starting state.
  • Resume past work. Press ⌘P and pick any previous session; it reopens with its full conversation.
  • Queue while busy. Send a message while the agent is working and it runs on the next turn.
  • Isolate risky work. Press ⌥⇧B to run the session on an isolated git worktree; switch worktrees with ⌥⇧H.
  • Switch branches. Pick a branch in the git dropdown to check it out for the tab. If a worktree already has that branch, Solus takes you there.
  • Follow the goal. The project panel shows the session's Goal card: status and progress against a token budget. Codex sessions can edit, pause, or clear it there.
  • Ship from the keyboard. ⌥⇧C commits and pushes the session's changes; ⌥⇧. pulls to sync. The Git panel's primary action goes further — branch, commit, push, and pull request in one step. See Opening & Merging Pull Requests.

The input bar does more than text: @ opens file autocomplete, / opens the slash-command menu, at the start of the input walks your prompt history, and ⌥⇧= expands the input for long prompts.

Switching Agents

A session isn't married to the agent it started on. Press ⌥⇧G to cycle the active agent, or pick one from the agent chip in the input bar — mid-conversation, any time the agent isn't running.

  • Before the first message. Switching a session that hasn't started yet just swaps the agent and its default model. There is nothing to hand off.
  • Mid-session, it's a handoff. Solus exports the conversation so far — plus the outgoing agent's reasoning, when its provider saves it — and seeds the new agent with the transcript. It reads the history, then answers your next message as the next turn.
  • A divider marks the switch. A "Switched to …" line lands in the transcript at the handoff point, and the full history stays readable across segments.
  • Each agent keeps its thread. Every agent holds its own provider thread. Switch back to one you used earlier in the session and Solus restores that thread instead of starting cold.
  • The model follows the agent. The session takes the new agent's default model; change it with ⌥⇧M or ⌥⇧Z.
  • Busy sessions wait. You can't switch while the agent is working — stop it (⌃C) or let the turn finish first.

Switching the agent on one session never changes other sessions — it only becomes the default for new ones.

Delegated Agents

Ask your agent to delegate ("review this with a second agent", "search the repo with a subagent") and it hands the work off. The exchange lands in the transcript as a card you can follow, answer, and open.

Two ways to delegate

Subagent · headless

A one-shot run in the same working directory that returns a written answer. Can be launched read-only. The card shows its prompt and its report.

Session · a peer

A full Solus session with its own agent, model, and history. It keeps running after the exchange; open it like any other session.

The exchange card

  • One card per exchange. A delegating turn shows one card with the other agent, its status, and elapsed time. Several agents dispatched in one turn share the card.
  • Follow along. The dialogue streams into the card live.
  • Reply directly. The field at the bottom of the card messages that agent's session without adding a turn to yours.
  • Answer a blocked agent. If it stops to ask something, the card asks you in place, and answering unblocks it.
  • Open the session. Click Open session to take over the peer session in a tab of your own.
  • Unattended by design. Delegated runs never enter plan mode and never stall on permission prompts. They finish with the scope they were given.

Delegation is the agent's call. Ask for it in your prompt ("review this with a second agent", "search the repo with a subagent") and it uses the tools it has.

Working with Plans

For anything bigger than a one-liner, make the agent show its approach before any code changes. You mark the plan up like a PR review, so course-corrections happen before the work, not after.

  • Enter Plan mode. Press ⌥⇧Tab until the permission mode reads Plan, then send your prompt.
  • Read the plan. When the agent is ready, it opens the plan full-screen as Markdown.
  • Comment. Select any text to attach an inline comment to that section, or add a top-level comment for the whole plan.
  • Approve or reject. Approve into Ask (⌥Y) or Auto (⌥A) mode. Your comments travel with the approval. Reject (⌥R) to stop the agent and redirect it.

Keeping plans around

  • Pin or bookmark. Pin a plan (⌥P in the workspace) to keep it on top, or bookmark it (⌥B) to revisit later.
  • Revisions. Updated plans keep their previous versions. Compare or revert from the revision dropdown.
  • Any model. Plan mode works with every model; Solus handles the orchestration.

Plans are saved to disk as Markdown. Press ⌥⇧L to open the workspace and browse plans across sessions.

Rate Limit Queueing

When a session hits an API rate limit, Solus keeps your work. Set the default under Settings → Rate limit behavior, or override it per tab:

Ask (default). A card appears prompting you to choose how to handle the limit.
Queue. Silently waits for the rate limit to reset, then re-sends your message automatically.
Continue. Lets your agent proceed with what it has so far, without waiting for the limit to reset.
Stop. Discards the queued message and halts the current task.

Knowing how much is left

The project panel (⌥M) shows a quota meter for every signed-in agent: how much of the Session and Weekly windows remain, with a countdown to each refill.

Workspace Panes

In editor mode, plans, Works, diffs, reviews, and documents open as panes over or beside the conversation, so you read them without losing your place.

How panes behave

  • Focus or split. Press ⌥⇧\ (or use the pane header action) to move a plan, Work, automation, or review between the focused primary pane and the split side pane.
  • Diffs and files. ⌥⇧D opens the diff, ⌥⇧O the files pane, ⌥⇧F changed files, each beside the conversation so you can inspect code and keep prompting.
  • PR review. A pull request opens with the review maximized; use the Chat control to reveal the conversation beside Activity, Guide, and Diff.
  • One commit at a time. Click a commit in the Activity timeline and the Diff narrows to that commit's own changes. A band names the commit and takes you back to all changes. Inline comments are off while one commit is in view, because comment anchors belong to the full diff.
  • State stays put. Closing a pane restores the conversation with scroll position and drafts intact.

Diff Panel

When the agent says it's done, verify it. Press ⌥⇧D in editor mode to see every file the session touched.

How it works

  • Navigate files. ⌥N / ⌥P step through changed files, ⌥F searches, or click a file in the list.
  • Filter by turn. Select a turn in the conversation, or press ⌥→ / ⌥← to move through turns.
  • Leave comments. Press ⌥C to start an inline comment on the current line.
  • Send feedback. Write a general note in the feedback box, then press ⌥↵. Your line comments and note land in the conversation as one message.

See the Keybindings → Diff panel section for the full list of shortcuts.

Opening Changed Files

Every edit shows an inline diff preview in the conversation. With a default editor set in Settings, each preview gets an Open button that jumps to that file in your editor. Press ⌥⇧F to open every changed file at once.

Supported editors (auto-detected at launch): VS Code, vim, nvim, helix. Set your preferred editor in Settings.

Review Companion

Before you commit or open a PR, have a second agent review the branch (commits, uncommitted edits, and untracked files) and write an inline report of findings.

How to use it

  • Open the project panel. Press ⌥M in editor mode and find the Git section.
  • Generate a review. Click Review changes. The review runs in the background while you keep working.
  • Open the report. When ready, the button becomes View report.
  • Jump to a finding. Click any finding to focus that exact file and line in the diff beside it.
  • Regenerate. After more changes, click the refresh button in the companion header.

Pick the reviewing agent and model under Settings → Review companion; it defaults to your active agent and its default model.

Opening & Merging Pull Requests

Open a pull request and merge it without opening GitHub:

Publishing the work

The Git section of the project panel (⌥M) shows one primary action that reads your branch state and runs every step it needs:

  • On the default branch. Uncommitted work becomes a feature branch first, then a commit, a push, and a pull request.
  • On a feature branch. Commit, push and open PR, or just Commit and push once the pull request exists.
  • Nothing to commit. Unpushed commits push and open the pull request; a published one opens directly.
  • Behind the upstream. Sync first (⌥⇧.) — the action waits until the branch is up to date.
  • Messages are written for you. The commit message, the branch name, and the pull-request title and description come from the change itself: commit subjects, diff statistics, and the repository pull-request template when there is one. If generation fails, Solus falls back to a plain draft from the same context.

⌥⇧C still commits and pushes directly. Writing style, template handling, and the model that writes them live under Settings → Source Control.

Merging

  • Open the PR. Open the Pull Requests page from the sidebar and select the PR.
  • Check readiness. The review surface shows status, required checks, reviewers, and unresolved conversations.
  • Merge. Pick Merge commit, Squash, or Rebase and confirm. Branch-protection refusals are reported in place.

Resolving conflicts

If the PR conflicts with its base branch, choose Resolve conflicts: Solus checks the PR out into an isolated worktree and opens an agent session on the conflicted files. The agent resolves, commits, and pushes. Then merge normally.

Works

Ask for a design doc, a migration guide, or a slide draft and Solus saves it as an editable Work instead of a long Markdown block in the chat. Works outlive the session that created them.

  • Open the workspace. Press ⌥⇧L or click Folio in the sidebar — plans, documents, and diagrams in one searchable gallery.
  • Edit in place. Open a Work to edit it in the Document Editor; saving updates the stored Work.
  • Copy or reuse. Press ⌥C while a Work is open to copy its Markdown.
  • Storage. Works are stored locally under your Solus data directory. Documents are fully editable; slides are tracked so the app can surface and expand them.

Work modal

These shortcuts are active while a Work is open. The workspace itself has its own set — see Keybindings → Workspace.

ShortcutAction
⌥SSave
⌥CCopy to clipboard
⌘MComment on selection
⌘FFind & replace
⌥GOpen in Google Docs
EscClose

Document Editor

Works, prompts, and notes are edited in the Document Editor. It renders Markdown natively; toggle the raw Markdown view with the Markdown button in the top-right corner.

Formatting toolbar

Select any text to reveal an inline bubble menu with the following actions:

BoldItalicStrikethroughInline codeLinkH1H2H3Bullet listNumbered listBlockquote

Slash commands

Type / at the start of a line to open the block-type menu. Continue typing to filter.

ShortcutAction
/textPlain paragraph
/h1 · /h2 · /h3Heading levels
/bulletBullet list
/numberedNumbered list
/taskTask / checklist list
/quoteBlockquote
/codeSyntax-highlighted code block
/tableInsert a 3×3 table
/dividerHorizontal rule

Editor shortcuts

These shortcuts are active when focus is inside the Document Editor.

ShortcutAction
⌥⇧SToggle strikethrough
⌥⇧KInsert / remove hyperlink

Design Mode

"The button is misaligned" is a paragraph in text and two seconds with an arrow. Screenshot any window, draw on it, and send the image to your agent:

How to use it

  • Take a screenshot. Press ⌥⇧S or click the camera icon in the input bar. Solus captures the active window and opens the annotation overlay.
  • Annotate. Draw with the left-side toolbar, then confirm. The image lands as an attachment in the input bar.
  • Send. Add any extra context and press Enter. The agent receives the annotated screenshot and your message.

Annotation tools

ShortcutAction
1 · RectangleDraw a box to highlight a region. Drag from corner to corner.
2 · ArrowDraw a directed arrow pointing at a specific element.
3 · MarkerDrop a numbered pin. Each pin auto-increments so you can refer to them by number in your message.
4 · TextClick anywhere to place a text label directly on the screenshot.
5 · EraserClick the annotation nearest your cursor to remove it.

Keyboard shortcuts (annotation overlay)

ShortcutAction
1 – 5Switch tool
⌘ZUndo
⌘⇧ZRedo
⌘↩Confirm and attach annotated image
EscapeCancel and discard

The annotated image is composited at full screenshot resolution before being sent, so annotations are baked into the image your agent receives.

Voice Input: Mic vs Voice Mode

Two voice input modes; both transcribe locally with Whisper, so audio never leaves your machine.

Mic · manual

Press ⌥⇧Space or click the mic icon to start. Press again to stop, or just pause for 2 seconds and recording ends automatically. Transcript is inserted for review before sending.

Voice Mode · continuous

Enable in Settings → Input, or press ⌥⇧V while composing. Window open → record → silence → send → agent replies → record again. Hands-free loop. Hidden window cancels recording.

Automations

An automation is a saved prompt that runs on a schedule or on demand: a daily TODO sweep, a nightly dependency check. Press ⌥⇧V to open the Automations page, then ⌥N to create one: write the prompt, pick the agent and model, choose a trigger, and save.

What each automation captures

  • Prompt. The instruction the agent runs each time.
  • Agent & model. Which agent, model, and reasoning effort. Runs execute headless in Auto permission mode.
  • Working directory. Defaults to your active project.
  • Max turns. An optional cap per run, as a guardrail.
  • Enabled / paused. Paused automations never fire on schedule.

Triggers

ShortcutAction
ManualNo schedule. Runs only when you click Run now or an agent triggers it.
OnceRun a single time at a specific date and time.
IntervalRun every N minutes, hours, or days.
DailyRun every day at a set time.
WeeklyRun on a chosen weekday at a set time.
MonthlyRun on a chosen day of the month at a set time.
CronA raw 5-field cron expression (minute hour day-of-month month day-of-week) with an IANA timezone.

Scheduled triggers fire only while Solus is open. They don't run in the background when the app is quit.

Running & history

  • Run now. Trigger any enabled automation immediately, regardless of schedule.
  • Run history. Each automation logs past runs with status, tool-call count, and output or error.
  • Open a run. Open a completed run as a full session to see exactly what the agent did.
  • Created by agents. Agents can create, edit, and trigger automations for you; theirs are tagged in the list.

Tasks

A task board in the project panel: track work as local tickets or synced GitHub Issues, and start agent sessions straight from a task so the ticket context travels with the work.

  • Local tickets and GitHub Issues. Keep lightweight local tickets, or connect a repository to sync GitHub Issues into the same board. Status flows both ways.
  • Planning fields. Epics, priorities, labels, due dates, and threaded comments.
  • Start a session from a task. The ticket body and comments ride along as context.
  • Linked work. Sessions, pull requests, plans, and works stay linked to the task, so the board shows where everything stands.

Hosts & Connections

Any browser on your network can pick up your sessions, and other machines running the Solus server become hosts you can run sessions on, all driven from the same window.

The web UI

With Solus running, open port 3000 (override with SOLUS_PORT) from your phone, tablet, or another computer. The first visit shows the pairing screen.

http://<your-mac-ip>:3000  ·  e.g. http://192.168.1.42:3000

Every address Solus is reachable from (localhost, LAN, Tailscale / VPN) is listed in Settings → Connections.

Pairing a device

  • Generate a pair code. In Settings → Connections, click Generate pair code. You get a 6-digit code plus pairing links, expiring after 5 minutes.
  • Connect from the browser. Open a pairing link on the device (AirDrop, Messages, etc.) and the address and token are read from the URL. Or use Manual setup and enter the address and code.
  • Name the device. Optional; defaults to your browser and OS.
  • Stay paired. The browser keeps a long-lived token and reconnects on every later visit until you revoke it.

The web UI reconnects automatically after sleep or network changes, supports web push notifications on capable browsers, and always opens links on the device you're holding, never on the remote machine.

Adding a host

A host is any other machine running the Solus server. Add one from the host directory:

  • Pair over SSH. Point Solus at user@host and it connects, installs the Solus server, and pairs automatically. No SSH? Enter the server's address and pair code by hand.
  • Pair with a server. A server you installed yourself prints a pair link and code at startup. Run solus pair to create another link and QR for any client.
  • Automatic setup. Once paired, Solus provisions git credentials from your GitHub connection, installs the agent CLIs, and walks you through signing into them.
  • Readiness at a glance. The host directory shows what's installed and signed in, with one-click repairs for anything missing.

Run on: choosing where a session runs

Every new session has a Run on picker in its header. Pick any host before the session starts; Solus remembers the choice per repository.

Running on another host is a dispatch. It carries the repository, not your working tree:

  • A fresh checkout, every time. The host clones or syncs from the git remote and cuts a fresh worktree from the default branch.
  • Uncommitted changes stay put. Unpushed edits don't travel. Commit and push first if you want them there.
  • Always isolated. A dispatched session always runs in its own worktree.
  • Work comes back as a PR. Commit → push → pull request, same as local work.
  • Needs a git remote. No remote, nothing to clone. Open the folder directly on that host instead.

You can also open a project that already lives on a host from the open-project dialog; it behaves like a local one. Once a session has started, its host is fixed.

Managing devices

  • Connected devices. The Connections panel lists every paired device with its label and last-connected time.
  • Revoke access. Revoking a device invalidates its token immediately; it must re-pair to reconnect.
  • Multiple servers. The web app remembers every server you've paired with; remove one with its ✕.

Network & security

  • Local only. Traffic stays on your network. Nothing routes through external servers.
  • Session tokens. Each device holds its own token; revoking one affects nothing else.
  • Tailscale / VPN. Use a Tailscale pairing link to reach your desktop from outside your LAN.
  • Loopback (same machine). http://localhost:3000 skips pairing in development mode only; production builds always pair.

Self-hosted server

Run the standalone server on any macOS or Linux box and reach it entirely from the browser. Install through Homebrew:

brew install Ashton-Sidhu/tap/solus # CLI + vendored server runtime brew services start solus # run the daemon in the background solus pair # create a one-time client pairing link
  • Manage from the CLI. solus start, solus logs, and solus update run, tail, and upgrade the daemon. Data lives under ~/.solus.
  • Pair every client. solus pair prints a one-time link, code, and QR. Run it again for each additional client.
  • Stays updated. Upgrade with brew upgrade solus, or solus update for tarball installs.

Settings

Open Settings with ⌘,. All preferences are stored locally on your machine.

Display

Editor mode Full editor layout or the compact pill overlay. Toggle with ⌥⇧E.
Dark theme Light or dark appearance, applied immediately.
Font size Base font size for messages and code blocks. Minimum 8px.

Agent & workflow

Default agent The agent for new sessions; unavailable agents are disabled.
Rate limit behavior Ask, Queue, Continue, or Stop. See Rate Limit Queueing. Tabs can override it.
Git worktrees New sessions run in an isolated git worktree; changes merge back when the session completes.

Text generation

Text-generation model The model behind short background writing: session names, metadata, and generated Git messages.
Backup text-generation model Used when the first choice is not installed on the host. Solus keeps your selection and reports the model it actually used.

These are host settings: a remote client uses the models installed on the host the session runs on.

Source control

Source control writing style Repository conventions matches each repository's recent commit subjects, Conventional Commits applies feat: / fix: prefixes, and Custom instructions uses your own direction.
Follow pull-request templates Structure pull-request descriptions with the repository template when one exists.
Source-control writer model Optional override for commits, branch names, and pull requests. Off uses the text-generation model.

Review companion

Review agent Which CLI agent reviews your branch for the Review Companion. Defaults to your active agent.
Review model The model the review agent uses. Defaults to that agent's default model.

Input

Voice mode Continuous hands-free voice input. See Voice Input.

Tools

Default editor The editor for opening changed files: VS Code, vim, nvim, or helix (auto-detected).
Default terminal System terminal or Ghostty. Terminals open in a shared solus tmux session, so they stay in one place and survive closing the window; requires tmux.

Settings are persisted to disk and apply immediately. No restart required.

Keybindings

The full reference, matching the app's defaults. Learn these first: summon (⌥Space), focus input (⌘L), cycle permission mode (⌥⇧Tab), open the diff (⌥⇧D). Every binding is editable in Settings → Keybindings; web-client variants are noted where they differ.

Global

These work system-wide, even when Solus is hidden.

ShortcutAction
⌥SpaceToggle window
⌘⇧KToggle window (alternative)

General

ShortcutAction
⌘OOpen project on current host (web: ⌥O)
⌘⇧OOpen project
⌘,Open settings
⌘LFocus input (web: ⌥L)
⌘KCommand palette
⌘/Keyboard shortcuts help
⌥⇧QToggle quick actions
⌥⇧`Open terminal
⌥⇧CCommit and push
⌥⇧.Sync (pull)
⌥⇧XPin / unpin session

Tasks

ShortcutAction
⌘NNew task (web: ⌥⇧N)
⌘TNew session in task (web: ⌥⇧T)
⌘⇧NNew session without task
⌥⇧TOpen tasks
⌥⇧FTask picker
⌃/Focus sidebar task search

Tabs

ShortcutAction
⌥FFork session
⌥⇧/Toggle split chat
⌃Tab / ⌃⇧TabNext / previous branch tab (web: ⌥⇧→ / ⌥⇧←)
⌥⇧N / ⌥⇧PNext / previous session in branch
⌘⇧WClose tab (web: ⌥⇧W)
⌥⇧UGroup tabs by status

View

ShortcutAction
⌥⇧EToggle editor / pill mode
⌥⇧DToggle diff panel
⌥MToggle project panel
⌥⇧LOpen workspace (plans, documents, diagrams)
⌥⇧OOpen files pane
⌥⇧\Open pane in split
⌥⇧VOpen automations
⌘BToggle sidebar
⌥⇧=Expand / collapse input
⌘= / ⌘- / ⌘0Zoom in / out / reset (desktop only)

Compose

ShortcutAction
⌥⇧AAttach file
⌥⇧STake screenshot
⌥⇧IDesign annotation mode
⌘⇧SSave prompt
⌥⇧KSaved prompts

Agent

ShortcutAction
⌥⇧TabCycle permission mode (Ask → Auto → Plan)
⌥⇧MCycle AI model
⌥⇧GCycle agent (hands the session off — see Switching Agents)
⌥⇧ZOpen model / reasoning menu
⌥⇧,Open run picker

Conversation

ShortcutAction
⌥HScroll to first message
⌥EScroll to bottom
⌘FFind in conversation
⌥⇧FOpen changed files
⌃CStop agent

Navigation

ShortcutAction
⌘PSession picker (web: ⌥⇧R)
⌥⇧JSession picker (alternative)
⌘[ / ⌘]Back / forward
⌘⇧FSearch in project
⌘EGo to file

Voice

ShortcutAction
⌥⇧SpaceStart / finish voice recording
⌥⇧VToggle voice mode (while composing)

Voice Mode (continuous, hands-free) can also be enabled in Settings → Input.

Automations

Open the Automations page with ⌥⇧V. These shortcuts are active while it's open.

ShortcutAction
⌥⇧VOpen / close automations
⌥NNew automation
EscBack to list / close

Git

ShortcutAction
⌥⇧BToggle worktree mode
⌥⇧HSwitch worktree
⌥WContinue in worktree
⌥⇧YOpen worktree in terminal

Pull requests

These shortcuts are active while the Pull Requests page is open.

ShortcutAction
⌥AApprove pull request
EscClose

Input & menus

ShortcutAction
EnterSend message
⇧EnterNew line
↑ / ↓Navigate prompt history (cursor at start of input)
@ or ~/ ./ ../Open file autocomplete
↑ / ↓ (file menu)Navigate files
Tab or Enter (file menu)Select file
Escape (file menu)Close file menu
/Open slash command menu
↑ / ↓ (slash menu)Navigate commands
Tab (slash menu)Select command
Escape (slash menu)Close slash menu
⌘Enter / Ctrl+Enter (plan)Save inline comment
Escape (plan comment)Cancel comment

Plan review

These shortcuts are active while a plan is awaiting your decision.

ShortcutAction
⌥YApprove (ask mode)
⌥AApprove (auto mode)
⌥RReject
⌥VReject with feedback
⌥LFocus comment field
⌥WToggle worktree
⌥DCollapse / expand action bar

Plan modal

These shortcuts are active while a plan is open.

ShortcutAction
⌥SSave / done editing
⌥CCopy plan to clipboard
⌥BSave for later (bookmark)
⌥MToggle comments
⌘MComment on selection
⌥OResume session
⌘FFind & replace
⌥GOpen in Google Docs
⌘⌥\Pin table of contents
EscClose

Workspace

These shortcuts are active while the workspace is open (⌥⇧L).

ShortcutAction
⌥⇧LOpen / close workspace
/ (slash)Focus search
↑ / ↓Navigate items
EnterOpen item
⇧EnterResume session
⌥PPin / unpin
SpacePeek
EscClose

Diff panel

These shortcuts are active while the diff panel is open.

ShortcutAction
⌥⇧DToggle diff panel
⌥MMaximize / restore panel
⌥RRefresh diff
⌥→ / ⌥←Next / previous turn
⌥N / ⌥PNext / previous file
⌘F or ⌥FFind in diff
⌥TToggle file tree
⌥VToggle split / unified view
⌥HToggle token highlighting
⌥CStart comment on current line
⌥] / ⌥[Next / previous comment
⌥↵Send diff feedback to session
⌘⇧↵Send feedback to a new session from feedback box
EscClose panel / clear selection

Files pane

These shortcuts are active while the files pane is open (⌥⇧O).

ShortcutAction
/ (slash)Focus search
⌥J / ⌥KNext / previous file
⌥TToggle file tree
EscClose