Skip to main content

Keyboard and the palette

The app is meant to be driven without the pointer. Everything the pointer can reach is in the palette, the sessions themselves are one digit away, and if you ever can't remember a binding, ⌘⇧/ puts the whole list on screen. The hard part was never a missing chord, it was remembering them.

Customizing shortcuts

Open Settings ▸ Keyboard shortcuts, click an app shortcut, then press its replacement. Saggar refuses collisions and keeps standard macOS commands and generated session-number bindings fixed. Menus, hints, onboarding, the command palette, and the shortcut sheet update to show the current bindings. Each binding, or the whole set, can be restored to its default.

The palette — ⌘K

An empty palette leads with the ↵ again ghost, the session you last jumped to, one key away. Behind it are the verbs that act across every session at once — close all the idle ones, tell every idle agent to continue, accept every waiting prompt, walk the triage queue, collect recent errors into the scratchpad.

Everything that opens a session is here too:

  • a plain session, or any model in your agent roster;
  • your own session presets, and the same again in a fresh worktree;
  • the project's saved commands, and its scheduled tasks on demand;

  • the sessions it remembers closing, reopened by name with how long ago they went.

The git chips are verbs as well — push and pull appear only when the counters have something to move, wearing ↑3 / ↓2 as their subtitle. The rest is the quieter chrome, all findable by name: rename and close, open in your editor, reveal, copy path, view on GitHub, favorite, hide, settings, arming remote control, terminal text size.

Start typing and the sessions join in, fuzzy-ranked against the verbs: jump rows wearing their live status dot, and projects to open. Lead with > to browse the verbs alone. The catalog is longer than the rows it shows, on purpose — an empty palette offers the primary set and the long tail waits for a needle, because a list you scan should be the handful you would have reached for.

Searching inside terminals

Three or more characters and the palette also matches what is inside your terminals — every session whose buffer or scrollback contains the text, literal and case-insensitive, joins the results as a Found in … row with its freshest matching line as the subtitle. This is the “which one printed that error” case. Name and verb matches keep the top of the list, with a few slots reserved so a page of name matches can never crowd the content hits out. Buffers are snapshotted once when the palette opens, so the search costs nothing per keystroke.

Inside one terminal

Find — ⌘F

⌘K says which session said it; ⌘F says where. A small bar floats over the terminal in front of you, searching live as you type with the match scrolled into view, ↵ and ⇧↵ stepping through, and an honest “3 of 14” beside the field. Esc hands the keyboard straight back to the shell, and the query is remembered for the next ⌘F.

Jump to prompt — ⌘⇧↑ / ⌘⇧↓

Walk the terminal command by command. Every prompt records where it landed, and the jump puts the previous or next one at the top of the viewport — the head of a long build's output in one press instead of fifty wheel turns. ⌘⇧↓ past the last prompt lands back on the live bottom.

Quick run — ⌘P

The git pull you would otherwise open a whole terminal for while an agent holds the one you're in. Type one command and it runs in a live panel floated over the corner, in the selected terminal's exact directory, worktree and all. The panel never takes focus and the selection never moves. It runs as a one-shot, so a clean finish ends with a real exit code and the panel folds itself away after a readable beat; a failure leaves a live prompt sitting in its own output, ready to click into and keep as an ordinary terminal. Fire a second before the first has folded and they stack up the edge rather than stealing each other's spot. ⌘⇧M is the persistent sibling — see the monitor dock.

Finding a listening process

⌘⇧P maps ports back to the session that started them, including processes left behind after a session closed. From there you can return to a live owner or explicitly release an orphan. See Project workspace for the ownership and safety rules.

Switching sessions

⌘1⌘9 land on a session by its place in the menu. Those places move — attention gravity keeps re-sorting the menu — so hold ⌘ on its own for a second and each session's digit is drawn on its row, and on the panes on screen. You read the number instead of remembering it, so it doesn't matter that the order moves. A chord is not a hold, so a second modifier, any keystroke, or ⌘-tabbing away takes the numbers straight back down, and ⌘K never flashes them.

Past nine, ⌘⇧] and ⌘⇧[ step through the whole menu, wrapping at both ends.

Every binding

KeyDoes
⌘1–⌘9Go to a session by its place in the menu (hold ⌘ to see the numbers)
⌘↓ / ⌘↑Next / previous session (⌘⇧] / ⌘⇧[ also work)
⌘↩Answer the session in front of you
⌘⇧ASupervise or unsupervise this agent session
⌘⇧RRun next — queue a follow-on command behind the focused session
⌘JTriage the next session that needs you
⌘TNew session in the current project — the type you last picked from +
⌘⇧TThe same, as an unassigned session with no project
⌥⌘TOpen new session options
⌘N / ⌘⇧NThe plain pair — just a shell, in the project or outside one
⌘KCommand palette
⌘PQuick run
⌘⇧MMonitor — a persistent, docked ⌘P
⌘DShow a second session beside the current one
⌘]Move the keyboard between split panes
⌘⇧WCollapse the split
⌘IAdd an image to the focused agent session
⌘FFind in this terminal
⌘⇧JBrowse this terminal's prompt history
⌘⇧↑ / ⌘⇧↓Jump to the previous / next prompt
⇧PageUp / ⇧PageDownA page of scrollback
⌥⌘↑ / ⌥⌘↓

The top / bottom of the scrollback (⌘Home / ⌘End also work)

⌘⇧CCopy the last command's output
⌘⇧K

Clear this terminal — screen and scrollback, since ⌘K is the palette here

⌘LFilter the project menu
⌥⌘NCreate a project
⌘⇧OAdd a project
⌘⇧GView the current project on GitHub
⌥⇧⌘WWorktree cleanup — prune the project's stale worktrees
⌘W

Close the focused session — falls through to closing the window when nothing is selected

⌥⌘WClose this project
⌥⌘1–⌥⌘9Choose an option on the top attention card
⌘/Toggle the scratchpad beside the session
⌃⌘S

Overlay the project menu — an edge you reach for rather than keeping it docked, at any window width

⌘= / ⌘- / ⌘0

Terminal text size — the app's own size is a separate dial in Settings ▸ Appearance

⌘⇧P

Ports — what's listening, and the processes that outlived their terminal

⌘⇧IShow Sessions
⌥⌘IShow Passport
⌘⇧/The whole list, on screen
⌘,Settings
⌘QHold to quit — with a warning while anything is still running