Skip to content

Keyboard

Forge is keyboard-native. Almost every action you take in the UI has a chord that gets you there faster than the mouse. This page is the reference. The same table is available in-app behind ?.

How chords work

A chord is a sequence of keys pressed in order. g then s is two key presses, not held simultaneously — press g, release, press s. You have ~1 second between presses; longer than that and the chord resets.

is Cmd on macOS and Ctrl on other platforms. is Shift. Single-key chords are case-insensitive in display but uppercase here for the convention.

Chords respect typing context. When focus is in a text input or textarea, shortcuts that would conflict with typing (single letters, especially g-prefixed nav) don't fire. ⌘K always fires; it's safe across contexts.

Reference

ChordAction
g iInbox
g bBrowse
g sIssues
g pProjects
g cSprints
g nInitiatives
g rRoadmap
g uStandup
g tTime
g aAnalytics
g oAgents (ops)
g eAgents (admin)
g lPlugins
g ,Settings
g wSwitch workspace

TIP

The mnemonic for g is "go." Most secondary letters match the first letter of the destination — s for issues (the iSsues list), p for projects, c for sprints (cycles, internally), n for initiatives (iNitiatives), r for roadmap. A few are arbitrary; commit them to muscle memory once and they stick.

Shell

ChordAction
⌘KCommand palette
/Search
?Help overlay
⌘\Toggle sidebar
escClose current dialog/drawer

The command palette (⌘K) is the universal entry point. It can open any page, run any action, jump to any issue or project by key, and trigger most workspace-level commands. If you forget a chord, open the palette and type — the matching command shows its chord next to it.

Results in the palette are type-grouped into buckets (Issues, Projects, Initiatives, Saved Views, Sprints, Agents, Actions). The empty-input state shows two rails: Pinned (your sidebar pins) and Recents (entities you've recently visited, tracked server-side via recentItem.track). When the search returns no matches, the palette offers a one-key "Create issue '{query}' →" affordance — Enter creates the issue with the query text as title.

Create

ChordAction
⇧CQuick-create issue

The quick-create dialog covers the common-case fields: title, description, status, priority, project, kind. For sub-issues, attachments, relations, or agent assignment at create time, navigate to /w/<slug>/issues/new (or use the palette: type "New issue page").

Work

ChordAction
cOpen active sprint
⇧AAssign agent (in issue detail)

c is a global chord. From any page, it opens the currently active sprint. If multiple sprints are active (uncommon), it opens the most recently started.

⇧A is contextual — it only fires inside an issue detail view. It opens the agent picker (filtered by capabilities and presence) so you can hand the issue to a specific agent without leaving the page.

Pins

ChordAction
pToggle pin (in issue / project / initiative detail)

Pin an entity to surface it under the Pinned sidebar section. Pins are per-user, polymorphic across Issue, Project, Initiative, SavedView, Cycle, and Agent — the p chord works on every entity-detail page that exposes a <PinButton /> in the header.

The cross-workspace topbar pin strip preserves the legacy 3-pin cap for issues; the sidebar Pinned section has no cap. Pinned items also surface in the command palette empty-state rail.

Notes

ChordAction
nFocus the Quick Notes add input (on the dashboard)

Capture a personal markdown note without first deciding which issue it belongs to. Press Enter to save (single-line capture when no title is set) or ⌘ Enter for multi-line. See Quick Notes for the full surface.

Bulk

ChordAction
xToggle selection on the row your cursor is over
⇧XSelect range from the last selected row to the cursor

Available on /issues, the project page's List tab, and the Inbox buckets that support multi-action. Selection state powers the sticky <BulkBar /> at the bottom of the viewport. See Issues → Bulk operations for the action set.

Time

ChordAction
tToggle time-tracker widget
⇧TStart/stop timer (in issue detail)

t shows or hides the persistent time-tracker widget. The widget shows your currently running entry (if any) and exposes stop. ⇧T is contextual to an issue detail — it starts a timer against that issue, or stops the open timer if there is one.

Time chords only do anything if Workspace.timeTrackingEnabled is true. Otherwise they no-op.

A pragmatic order to learn them in

Don't try to memorize the whole table. Internalize them in waves.

First. ⌘K, ⇧C, g s, esc. With these four you can navigate to issues, create one, back out, and find anything else by typing.

Second. g p, g c, g u, c. Projects, sprints, standup, active sprint. The daily working set.

Third. ⇧A, p, t / ⇧T. Issue actions and time tracking, when you start using them.

Fourth. Everything else, as needed.

Typing context

A note worth repeating: shortcuts respect typing context. When focus is in a text input or textarea — title field, description, comment box, filter input — single-letter chords don't fire. You can type freely without accidentally navigating away.

The exceptions are:

  • ⌘K — always fires.
  • esc — always fires (and the convention is "leave this context").
  • ⌘\ — always fires.

If you press a chord and nothing happens, check whether you have a text input focused. esc first, then the chord.

Where to next

Axiom-Labs · built for humans and agents