01. Install, Credentials, and First Success

Quit and restore the terminal

The fullscreen TUI takes over the terminal: alternate screen, hidden cursor, mouse, and bracketed paste. Safe restore means every exit path — confirmed quit, slash quit, first-run q, a single SIGINT / SIGTERM — leaves raw mode, shows the cursor, and returns you to the normal screen. A later ?1049h (re-enter alternate screen) must not appear after that teardown.

Ways to exit

There are several ways to ask the TUI to exit. They are not all the same confirmation:

HowConfirmationTypical use
Ctrl+Q (or Ctrl+D in VS Code-family terminals)Double-press within about 1000 ms. First press shows press again to quit and does not exitAccidental keyguard
/quit or /exitNone — exits immediatelyDeliberate slash command
Click Quit on the welcome screenNone — exits immediatelyMouse
Bare q on the no-Provider configure screenNone — exits immediatelyFirst-run interceptor
Bare q on the configured welcome / in a sessionNot quit — it is typed as input (or vim/dashboard overlay rules)Do not rely on bare q after you have a Provider
One SIGINT / SIGTERM (Ctrl+C only when it is not bound to cancel)Graceful restore; completed path exits 0Host signal

Ctrl+C is not quit while a turn is streaming (it cancels the turn) or while a permission card is open (it cancels the permission). Idle, with a draft, the first Ctrl+C clears the draft; a second empty-composer Ctrl+C is the usual cancel/quit escalation the shortcuts bar describes.

In VS Code, Cursor, Windsurf, and Zed integrated terminals, the host often swallows Ctrl+Q. Matcha CLI then binds Ctrl+D as the sole quit key (Ctrl+Q is not bound). Half-page-down becomes bare Shift+D.

Keyboard: confirm, then quit

  1. From the configured welcome screen or a session, press Ctrl+Q once (Ctrl+D in a VS Code-family terminal).
  2. The shortcuts bar (or confirmation hint) should show press again to quit. The process is still running.
  3. Press the same chord again within about one second.

The process should exit 0. Your prompt should be back in the normal screen, with a visible cursor, and mouse reporting off.

A lone press is treated as a stray key and is ignored after the confirmation window expires. Resize during the hint must not drop the confirmation.

Slash: /quit or /exit

In the prompt, type:

/quit

or

/exit

/quit is the command name; /exit is the alias. Either one dispatches quit immediately (no double-press). Bare words quit, exit, :q, :q!, :wq, and :wq! are also treated as quit outside slash resolution (empty-prompt send / dashboard). Bare q is not in that alias list.

First-run configure screen

If you are on No model Provider is configured, press q (or activate the Quit row). That exits immediately so you are not trapped in Configure. After a Provider is configured, do not expect bare q to quit — use Ctrl+Q twice, /quit, or the Quit control.

Signals

From another terminal, or if the host delivers it:

kill -INT <pid>    # SIGINT
kill -TERM <pid>   # SIGTERM

One signal should restore the same way as a confirmed quit (alternate screen off, cursor on, mouse/paste reset) and exit 0 on the graceful path. Do not use a second signal as the documented procedure; the double-signal window is not a supported UX.

What restored means

After a successful exit, the host should:

  • show your normal shell scrollback (alternate screen left)
  • show a blinking/block cursor
  • no longer send mouse events to the program
  • accept paste without leftover bracketed-paste wrapping from Matcha CLI

Window title restore is not guaranteed yet. If the tab title still says matcha, that is a known open item, not a failed quit.

Not quit

ActionWhat it does
Ctrl+C during RespondingCancels the turn; draft kept
Ctrl+C on a permission cardCancels the permission; does not exit
/homeBack to welcome; process stays up
matcha update after quitUnavailable. Rebuild from source