| 💾 Saved. d722711 k33g 5h ago | 1 | # Reference: slash commands and keyboard shortcuts |
| 2 | |
| 3 | > Neutral description of the commands recognised at the terminal prompt of `mm`. They are matched on the whole trimmed line; anything else is sent to the model. |
| 4 | |
| 5 | ## Commands |
| 6 | |
| 7 | | Command | At the prompt | During a generation | |
| 8 | |---------|---------------|---------------------| |
| 9 | | `/quit` | Exits the program. | Cancels the generation, prints `Goodbye.`, exits. | |
| 10 | | `/abort` | Prints `⚠️ No generation in progress.` | Cancels the generation, prints `🛑 Aborting...`; the commands already run stay in the history. | |
| 11 | | `/compact` | Compresses the history now, regardless of the threshold; prints the `🗜️` report, or `🗜️ nothing to compact` when no turn is older than `context.keepLastTurns`. | Sent to the model as a new message (see below). | |
| 12 | | `/new` | Clears the history back to the system prompt, resets the loop detector and forgets the server's last token count; prints `🆕 new session: N message(s) forgotten` (N counts every message except the system prompt). | Treated like any other text: cancels the generation, keeps its partial history, then runs as `/new` on that history. | |
| 13 | |
| 14 | An empty line at the prompt is ignored. |
| 15 | |
| 16 | ## `@path` in a question |
| 17 | |
| 18 | | Input | Effect | |
| 19 | |-------|--------| |
| 20 | | `@<path>` at the start or after a space, bracket or quote | If the path exists (relative to the start directory, absolute, or `~/…`), a dim `📎 <absolute path>` line is printed and `[attached file: <absolute path>]` (or `[attached directory: …]`) is appended to the message the model receives. Trailing punctuation is ignored; each path is attached once. | |
| 21 | | A `@<path>` that names nothing on disk, or `@` glued to a word | Left as typed. | |
| 22 | |
| 23 | Details and examples: [Point the model at a file with `@path`](../how-to/attach-a-file.md). |
| 24 | |
| 25 | ## Any other text during a generation |
| 26 | |
| 27 | | Input | Behaviour | |
| 28 | |-------|-----------| |
| 29 | | A non-command line | Prints `🔄 New command received. Cancelling current task...`, cancels the current generation, keeps its partial history, then submits the new line as the next question. | |
| 30 | |
| 31 | ## Keyboard shortcuts |
| 32 | |
| 33 | | Key | At the prompt | During a generation | |
| 34 | |-----|---------------|---------------------| |
| 35 | | `Ctrl+C` | Prints `Goodbye.` and exits. | Prints `🛑 Interrupted (Ctrl+C).` and cancels the generation; the prompt comes back. | |
| 36 | | `Ctrl+D` (end of input) | Exits. | — | |
| 37 | |
| 38 | ## Messages printed at the end of a turn |
| 39 | |
| 40 | | Message | Meaning | |
| 41 | |---------|---------| |
| 42 | | `🛑 Generation aborted.` | The turn was cancelled (`/abort`, `Ctrl+C`). The question and any completed tool turns stay in the history. | |
| 43 | | `[error: …]` | The provider explained a failure in one line; a question that got no answer is removed from the history. | |
| 44 | | `⚙ N command(s)` | Number of `bash` commands that actually ran in the turn. | |
| 45 | | `· 📝 N file op(s)` | Appended when file tools ran. | |
| 46 | | `· 📖 N skill(s)` | Appended when skills were loaded. | |
| 47 | | Numbered green list | The commands and file operations of the turn, one per line, when `displayCommands: true`. | |
| 48 | |
| 49 | ## ACP mode |
| 50 | |
| 51 | Two commands exist in ACP mode: `/new` and `/compact`. They are advertised to the editor through an `available_commands_update` notification and intercepted by `session/prompt` when the prompt text, trimmed, is exactly the command. Each answers with one `agent_message_chunk` carrying the line the terminal would print, then `stopReason: end_turn`; the model is not consulted. |
| 52 | |
| 53 | | Command | Over ACP | |
| 54 | |---------|----------| |
| 55 | | `/new` | Same as in the terminal: history back to the system prompt, token count forgotten; the session id, `cwd` and allow-always grants are kept. | |
| 56 | | `/compact` | Same as in the terminal, always forced: `🗜️ compressed …`, `🗜️ nothing to compact: …` or `[compact: failed, history kept: …]`. Waits for a running turn to finish first. | |
| 57 | |
| 58 | `/quit` and `/abort` do not exist in ACP mode: the editor owns the process and ends it by closing stdin, and cancels a turn with its own stop key through `session/cancel`. See the [ACP reference](acp.md). |