Skip to content
overterm
Documentation

Command palette

One search over your command history, snippets, actions, tabs and worktrees.

⌘K opens one search over five things at once: what this machine has actually run, your snippets, the app’s own actions, your tabs and the repository’s worktrees. Beside the list is a detail pane — a snippet’s placeholders to fill in, or when a command last ran and how it went.

If you forget every other shortcut, this is the one to keep.

Scopes

Chips in the field narrow the search to History, Snippet or Action; with none selected it searches everything. A row’s group is shown either way, and tabs and worktrees are always in the list even though they have no chip of their own.

Group Rows
History commands this machine has run, with the exit code and duration
Snippet your snippets, with their {{placeholder}}s
Action the app’s own commands
Tab every open tab, by title and directory
Worktree every worktree of the repository, by name and path

Before you type, the order is actions, tabs, worktrees, snippets, then history. Once you type, ranking decides — titles outrank subtitles, and history rows are ranked below everything else. A history row is a guess at what you meant; an action named for what you typed is not. Without that rule a long command containing an n, a c and an l somewhere outranked New Claude Tab for “ncl”.

How history is ranked

The ranking is the feature, so it is worth stating exactly. For each matching command:

  1. This folder first. A command run in the selected tab’s folder gets the largest bonus; one run in a folder above or below it gets a smaller one. The same command means something different in another checkout, and the one you want is nearly always here.
  2. Then recency, in whole hours — so today beats last week without the last minute beating a better match.
  3. Then frequency, counted up to twenty runs.

Twelve rows at most. The detail pane says when it last ran, in which folder, its exit code and duration, and how many times you have run it.

History is fed by the command record the terminal already keeps — every command with its exit code, its duration and its folder — and the same command run again is the same entry, moved to the front with its new outcome. A list with git status in it forty times is not a history.

Up to 2000 commands are kept, in history.json. See Files on disk.

The one-time seed

The first time Overterm runs with no history.json, it seeds the list from your shell’s own history file — $HISTFILE, else ~/.zsh_history, else ~/.bash_history — newest first, duplicates dropped, up to 2000 commands. zsh’s extended format (: 1699999999:0;git status) is unwrapped.

That is all the file has, so a seeded entry carries no folder, no exit code and no duration. It happens once; after that the list is what you ran in Overterm.

Running a row

Key What it does
↩ runs it — types the command and Return
⌥↩ pastes it without running
↑ ↓ move, wrapping
⎋ closes the palette

Everything is typed into the selected terminal, so nothing happens that you could not have typed yourself. A snippet with {{placeholder}}s is filled in the detail pane first, and ↩ is not available until every placeholder has a value.

The actions

These are always in the list:

New Tab · Split Right · Split Down · New Task… · Agent Overview · Tab Peek · Show Pull Request · Clean Up Merged Worktrees… · New Claude Tab · New Codex Tab · Toggle Sidebar · Overgit · Changes · New Snippet… · Open Snippets File

And while the selected tab is split, four more: Next Pane, Zoom Pane, Equalize Panes, Close Pane.

Why ⌘K

Ghostty binds ⌘K to clear_screen and answers keys in the terminal before the menu sees them. The palette is ⌘K as the designs have it, so Overterm writes an unbind for Ghostty’s and moves clearing the screen to ⇧⌘K. Both are rebindable — see Keyboard shortcuts and keybindings.json.