Keyboard & Command Palette
Strand is keyboard-first: nearly every action has a command-palette entry, a global shortcut, or a surface-local key. This page covers the command palette, the full list of global (rebindable) shortcuts, and the fixed per-view keys.
The same repository and view commands are discoverable in Strand's native
desktop menu: the system menubar on macOS and a window menu on Windows/Linux.
Press F10 on Windows/Linux to focus it without a pointer. Menu shortcut labels
follow your bindings from Settings → Keyboard.
The command palette#
Open the palette with Mod+K. It is a single fuzzy-matched search over commands and repository data — the placeholder says it all: "Type a command, branch, file, or commit…".
Results are grouped, in this order:
- Actions — every command Strand exposes: initialize/open/clone/switch repository, show any view, fetch/pull/push/sync, stash and snapshot, create branch/tag/remote, clear merged local and matching remote branches, interactive rebase, review actions (AI review, pin/move/clear baseline, copy feedback as prompt), worktree cleanup, settings and theme, Heroi: New conversation, and "Abort
" while a merge or rebase is paused. - Branches — checkout a local branch. Remote branches without a local counterpart appear too; running one creates a local tracking branch. The current branch reveals its tip in the graph instead. Checkout shows the same transient progress pill as the sidebar.
- Tags — reveal the tagged commit in the graph (non-destructive).
- Stashes — "Apply stash: …", "Pop stash: …", and "Create branch from stash: …" rows per stash. Apply and pop reuse the checkout progress pill.
- Files — working-tree files; opens a pinned document in Work.
- Commits — reveal the commit in the graph and open its detail panel.
- Workspaces — one row per workspace (shown once a named workspace exists); running one switches to it. See Repositories and workspaces.
- Recent — recently opened repositories; running one opens it by path.
With an empty query only Actions, Workspaces, and Recent show; type something or pick a scope to surface branches, files, and commits. Repo-scoped groups disappear when no repository is open, and repository data is indexed lazily only while the palette is open, so it costs nothing on large repos when closed.
Scope filtering#
Below the input sit scope pills: All plus one pill per group present. Press Tab / Shift+Tab to cycle scopes, or click a pill. Under All, each group shows up to 6 results; under a single scope, up to 50.
Palette keys#
| Key | Action |
|---|---|
↑ / ↓ |
Move through results |
Enter |
Run the selected item |
Tab / Shift+Tab |
Cycle scope pills |
Mod+K |
Toggle the palette |
Escape |
Close |
For jumping between repositories specifically, the quick-switcher Mod+E is faster: a fuzzy overlay over open repos and recents that switches or opens directly.
Global shortcuts#
All of these are rebindable in Settings → Keyboard (see Settings): click a binding chip to record a new combination, unassign it, or reset it to the default. Conflicting bindings are flagged "Shared with another command". "Clone repository…" ships with no default binding — assign one there if you clone often.
| Shortcut | Command | Category |
|---|---|---|
Mod+K |
Command palette | General |
Mod+O |
Open repository… | General |
| — | Clone repository… | General |
Mod+, |
Settings | General |
Mod+1 |
Go to Workbench | Navigation |
Mod+2 |
Go to Local Changes | Navigation |
Mod+3 |
Go to All Commits | Navigation |
Mod+4 |
Go to Reflog | Navigation |
Mod+5 |
Go to Review | Navigation |
Mod+6 |
Go to Worktrees | Navigation |
Mod+7 |
Go to Workspace Review | Navigation |
Mod+8 |
Customize Workbench | Navigation |
Mod+Tab |
Next repository | Navigation |
Mod+Shift+Tab |
Previous repository | Navigation |
Mod+E |
Switch repository… | Navigation |
Mod+Shift+Y |
Fetch | Git |
Mod+Shift+P |
Pull | Git |
Mod+P |
Push | Git |
Mod+Shift+S |
Sync (fetch + pull + push) | Git |
Mod+Shift+M |
Suggest commit message | Git |
Mod+Shift+E |
Open in editor | Repository |
Mod+Shift+C |
Open in terminal | Repository |
Mod+R |
Refresh | Repository |
Mod+Shift+T |
Toggle light/dark theme | Appearance |
Mod+B |
Toggle sidebar | Appearance |
Push is deliberately on Mod+P and pull on Mod+Shift+P. The Git shortcuts act only on the currently open repository, and most Navigation/Git/Repository commands need a repository open — Mod+E is the exception and lists recents even with nothing open.
Alternative network strategies are palette actions rather than fixed shortcuts: fetch with or without pruning; pull with merge, rebase, or fast-forward-only, with or without autostash; push annotated tags; push every tag; and force-push with a lease. The current branch also contributes “Manage current branch upstream…” and “Push current branch to…” actions. Force-push always opens a branch-specific confirmation dialog, and plain --force is not exposed. Any branch or remote-branch row can open its richer context menu from the keyboard with the Menu key or Shift+F10.
Each configured remote contributes palette actions to prune only that remote, inspect its fetch/push refspecs, and make it the repository's default push remote. The same actions are in the keyboard-openable remote-folder menu.
Repository maintenance… opens a keyboard-operable activity dialog for an
integrity check, incremental Git maintenance, or guarded garbage collection.
Use Tab to move between actions and activity entries, Enter to run or
expand one, and Escape to close when no operation is running.
Search Git LFS: or Submodules: for each management action. These dialogs
focus the action selector; use arrow keys to choose, Tab to reach fields and
buttons, and Enter to run or confirm. While work runs, Cancel operation
stops it; Escape closes the dialog once it finishes. Submodule navigation,
pages and Open repository are also in the dialog's tab order.
New file… and New folder… open a focus-trapped path dialog for the
active repository. The Files sidebar exposes the same actions from its +
menu; use the arrow keys and Enter to choose one, or Escape to close it. Focus a
file or folder row and press the Menu key or Shift+F10 to reach its
editor/reveal, path-copy, history/blame, nested-create, rename, and confirmed
delete actions without a pointer.
A few fixed app-level keys are not rebindable:
| Key | Action |
|---|---|
Mod+Plus (or =) |
Zoom UI in |
Mod+Minus |
Zoom UI out |
Mod+0 |
Reset zoom to 100% |
Escape |
Close the palette, quick-switcher, or dialogs |
Zoom works even while a text field is focused, shows a "Zoom N%" toast, and persists.
Surface-local keys#
Each view has its own small set of fixed (non-rebindable) keys. Settings → Keyboard lists the most common of them under "Context shortcuts" for reference; this page is the complete list.
Work tabs and embedded terminals#
| Key | Action |
|---|---|
Ctrl/⌘+PageUp / Ctrl/⌘+PageDown |
Activate the previous / next tab in the active Work pane |
← / → |
Focus and activate the previous / next file or terminal tab in that pane |
Home / End |
Focus and activate the first / last tab in that pane |
Delete / Backspace |
Close the focused Work tab |
F6 |
Return focus from a terminal or document to the active pane's tab |
Quick Launch also exposes Split pane right and Split pane down, matching the two controls on every Work pane. Its Move active tab actions transfer the current tab to the previous or next pane, or create a new pane to the left, right, above, or below—the keyboard equivalents of dragging a Work tab.
When an embedded terminal owns focus, shell controls such as Ctrl+C and
Ctrl+R go to the shell. On Windows and Linux, Ctrl+C copies the current
xterm selection to the clipboard instead of interrupting, and Ctrl+V pastes;
a bare Ctrl+C with no selection still sends SIGINT. Ctrl+Shift+C /
Ctrl+Shift+V and the native Edit menu Copy/Paste (including right-click)
keep working. Command shortcuts remain app-owned on macOS (⌘C / ⌘V copy
and paste); on Windows and Linux the numbered view shortcuts and the fixed
Work-tab Ctrl+PageUp/Ctrl+PageDown pair remain app-owned.
Composed Workbench#
| Key | Action |
|---|---|
F6 |
Focus the active surface entry point, or its selector while customizing |
Mod+[ / Mod+] |
Cycle Workbench panes and focus each surface's entry point |
↑ / ↓ / ← / → |
Move through an empty pane's feature grid |
| Arrow keys on a focused divider | Resize the adjacent Workbench panes |
Quick Launch adds Workbench layout actions while customization is open: assign
any Strand surface to the active pane, split it right or down, close it, or apply the
Blank, Focus, Review station, and VS Code workbench templates. Feature menus
and every pane control are in the normal Tab order. Choose Done to hide
editing controls without closing the configured surfaces.
Heroi plugin surface#
When a Workbench pane hosts Heroi, the chat list and agent sessions are scoped to the active repository:
| Key | Action |
|---|---|
Mod+Enter |
Send the composer message |
Shift+Tab |
Toggle Plan / Build in the composer |
@ |
Search and insert a repository-file mention |
/ |
Search and insert an available agent skill |
↑ / ↓, Enter |
Navigate and choose an open mention/skill result |
Paste an image into the composer, or use the attach-image control, to send a screenshot with the turn. Files can also be dragged from a Files pane into the Heroi composer. Running threads continue in parallel when another conversation is opened or started. Each assistant turn starts with one grouped Tool calls control, then the Markdown reply, then that turn's added/changed/deleted file list. Expand the tool group, then a row, to inspect bounded command details and output. Click a path in the file list to open it in Work's Changes view. Quick Launch also has Heroi: New conversation.
Repository tabs#
When repository navigation uses the horizontal tab strip, focus a tab to use:
| Key | Action |
|---|---|
← / → |
Focus and open the previous / next repository tab |
Home / End |
Focus and open the first / last repository tab |
Delete / Backspace |
Close the focused repository or worktree tab |
Recent-repository and workspace menus expose their Open, Remove, Rename, and
Delete controls as separate tab stops. Enter / Space activates the focused
row or control.
Local Changes (staging)#
| Key | Action |
|---|---|
j / k |
Next / previous file (unstaged tree order, then staged) |
n / p |
Next / previous change block in the diff |
Shift+J / Shift+K |
Scroll the diff pane down / up |
s |
Stage / unstage the selected file |
d |
Discard the selected file (press twice within 2.5 s to confirm) |
Delete / Backspace |
Discard immediately, no confirm |
c |
Focus the commit subject field |
Mod+Enter |
Commit (from the message box) |
Mod+F |
Search within the current file or diff |
Each inline change-block action includes Lines…. Its checklist is fully
keyboard-operable: Tab moves through changed lines and actions, Space
toggles a line, and Escape closes it. Pointer users can also drag across
changed line numbers directly in the diff.
Review queue (Review and Workspace Review)#
| Key | Action |
|---|---|
j / k |
Next / previous file in the queue (crosses repo boundaries in Workspace Review) |
n / p |
Next / previous change block |
Shift+J / Shift+K |
Scroll the diff pane |
Space |
Mark the current file reviewed |
m |
Add a note on the current file |
s |
Stage the current file (if unstaged) |
d |
Discard the current file |
c |
Jump to Local Changes and focus the commit subject (Review only) |
o |
Open the file in its owning repository (Workspace Review only) |
Mod+F |
Search within the diff |
Arrow keys stay with the file tree. See Reviewing agent changes for the full workflow.
In-diff search bar#
Opened with Mod+F in Local Changes, Review, or Workspace Review.
| Key | Action |
|---|---|
Enter / ↓ |
Next match (wraps) |
Shift+Enter / ↑ |
Previous match |
Escape |
Close |
Commit graph (All Commits)#
| Key | Action |
|---|---|
↑ / ↓ |
Move row focus (Shift+↑/Shift+↓ extends the selection) |
Enter |
Open the commit detail panel |
Mod+A |
Select all loaded commits |
Menu key / Shift+F10 |
Open the row context menu |
Escape |
Clear the selection |
/ |
Focus the commit search field |
In the search field: Enter steps loaded matches (Shift+Enter backwards); Mod+Enter — or plain Enter in Content mode — runs the full-history search; ↑/↓ navigate the results dropdown and Enter opens a hit; Escape clears the query, then blurs. See Commits and history.
With several commits selected, the toolbar exposes ordered cherry-pick,
two-commit comparison, and patch-series export. Press the Menu key or
Shift+F10 on any selected row for the same operations plus copy actions for
ordered full SHAs, subjects, and complete messages. A single commit's menu and
detail panel expose subject/body copy and native-dialog patch export.
In commit/ref comparison dialogs, ↑ / ↓, Home, and End navigate
the full file tree; ← / → collapse or expand folders, and Escape closes the dialog. Merge cherry-pick/revert
dialogs use the native radio-group arrow keys to choose the mainline parent.
In commit detail, each changed-file row is focusable; Enter / Space opens
its diff. In a file's History tab, Space selects a revision for comparison.
Enter selects an unselected revision, then opens that selected revision in
the commit graph when pressed again.
Interactive rebase editor#
| Key | Action |
|---|---|
↑ / ↓ |
Move focus between rows |
Alt+↑ / Alt+↓ |
Reorder the focused row (disabled while preserving merges) |
p / r / e / s / f / d |
Set the verb: Pick / Reword / Edit / Squash / Fixup / Drop |
Backspace / Delete |
Drop the row |
Escape |
Close the editor |
Worktrees dashboard#
| Key | Action |
|---|---|
↑ / ↓ |
Move focus in the list |
Enter |
Review the focused worktree |
Space |
Tick it for the best-of-N comparison |
See Worktrees.
On macOS, shortcut chips render as tight glyphs (⌘⇧P); on Windows and Linux they render as words (Ctrl+Shift+P). Either way the bindings are identical modulo Mod.
Clone repository…, Repository history and downloads…, and Choose checked-out folders… are searchable palette actions. Within these dialogs, Tab moves between fields and buttons, Space toggles a checkbox or expands Advanced options, and Enter activates a focused button. Sparse-directory search bounds the visible list to 100 matches. Escape closes an idle dialog; a running download exposes Cancel download instead.