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:
| How | Confirmation | Typical 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 exit | Accidental keyguard |
/quit or /exit | None — exits immediately | Deliberate slash command |
| Click Quit on the welcome screen | None — exits immediately | Mouse |
Bare q on the no-Provider configure screen | None — exits immediately | First-run interceptor |
Bare q on the configured welcome / in a session | Not 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 0 | Host 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
- From the configured welcome screen or a session, press
Ctrl+Qonce (Ctrl+Din a VS Code-family terminal). - The shortcuts bar (or confirmation hint) should show
press again to quit. The process is still running. - 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:
/quitor
/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> # SIGTERMOne 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
| Action | What it does |
|---|---|
Ctrl+C during Responding | Cancels the turn; draft kept |
Ctrl+C on a permission card | Cancels the permission; does not exit |
/home | Back to welcome; process stays up |
matcha update after quit | Unavailable. Rebuild from source |