# Keyboard shortcuts and slash commands

> Find Code's keyboard shortcuts and command families, distinguish steering from queueing, and understand how Escape behaves at a prompt or approval card.

Source: https://kaitoi.io/docs/cli/shortcuts/
Section: Kaitoi CLI / Working with Kaitoi Code
Written for: Anyone working in the interactive Kaitoi Code terminal.
Prerequisites: Kaitoi CLI installed
Last reviewed: 2026-10-24

---

Type `/help` for the commands available in your installation, including discovered
extensions. The reference below covers CLI **0.9.0**. Terminal key support can
vary; use the displayed prompt and permission-card hints when they differ.

## Compose a message

| Key                            | At the ordinary prompt                                                                       |
| ------------------------------ | -------------------------------------------------------------------------------------------- |
| Enter                          | Send the message.                                                                            |
| Shift+Enter, or Esc then Enter | Insert a newline where supported.                                                            |
| Up / Down                      | Browse prompt history.                                                                       |
| Ctrl+R / Ctrl+S                | Search history using the prompt's search behavior. Enter accepts a match before you send it. |
| Ctrl+G, or Ctrl+X then Ctrl+E  | Edit the draft in your configured editor, then return it to the prompt.                      |

## Steer, queue, or stop active work

While a response runs, you can type a draft. **Enter** redirects work after the current step: Code ends that turn and
starts your steer as a follow-up before queued messages. **Tab** queues the
draft until the current turn finishes normally. **Esc** clears a nonempty draft first; with no draft, it stops the
active turn when the terminal listener supports it.


While a turn runs, a typed draft such as “Only change the header” has three
possible actions. Enter sends it as a steer after the current step; Tab queues
it for the next turn; Escape clears the typed draft. With no draft, Escape
stops the turn. On a permission card, Escape instead denies that pending
request. The illustrated keys only explain these choices.

Enter ends the current turn as redirected at its step boundary and starts the steer as a follow-up turn before queued messages. Tab instead queues the message until ordinary current-turn completion. Esc removes the draft without sending it; the permission-card Esc behavior is shown separately.

*Figure: Redirect after the current step, or queue until the turn finishes.*

A permission card owns its keys: **Esc denies the request**, while **Ctrl+C**
stops the turn. At the idle prompt, Ctrl+C or end-of-input follows the session's
exit flow instead. Stopping a turn does not undo actions already completed or
guarantee that dispatched remote work was canceled.

Type-ahead is bounded: up to five pending messages and 4,000 characters in the
draft. If you stop the turn, queued or steered text is held for the next prompt
instead of automatically starting new work.

## Find a command by its job

| Job                         | Commands                                                                                                                    |
| --------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| Inspect the session         | `/help`, `/status`, `/workspace [path]`, `/doctor`                                                                          |
| Sign in and configure       | `/login`, `/config`, `/config init`                                                                                         |
| Choose a model              | `/providers` (also `/models`), `/provider [id]`, `/model [id]`, `/effort [level]` (auto, low, medium, high)                 |
| Choose how to work          | `/mode [name]` (plan, build, crew), `/plan`, `/build`, `/crew [task]`                                                       |
| Inspect cost and context    | `/cost`, `/context`, `/compact [focus]`                                                                                     |
| Manage conversation history | `/sessions [all]`, `/resume [number-or-id]`, `/fork`, `/clear`                                                              |
| Recover an exchange         | `/undo`, `/redo`, `/rewind`                                                                                                 |
| Export or copy history      | `/export [format] [path]` (md or json), `/copy [json]`                                                                      |
| Enable command tools        | `/commands on`, `/commands off`                                                                                             |
| Review permissions          | `/permissions`, `/permissions remove <number>`, `/permissions clear`, `/permissions clear project`, `/auto on`, `/auto off` |
| Manage ordinary processes   | `/processes`, `/processes stop <id>`, `/processes stop all`                                                                 |
| Run your own shell command  | `/cmd <command>`                                                                                                            |
| Add an image                | `/image [path] [instructions]`; use startup `--image` for paths containing spaces                                           |
| Inspect extensions          | `/mcp`, `/skills`, `/agents`, `/hooks`                                                                                      |
| Follow Crew                 | `/run` and its displayed subcommands                                                                                        |
| Open a project              | `/studio [project-id]`                                                                                                      |
| Adjust the terminal         | `/notify [method]` (system, bell, off), `/statusline on`, `/statusline off`                                                 |
| Leave Code                  | `/exit` (also `/quit`)                                                                                                      |

Square brackets mean optional arguments; angle brackets mean a value you supply.
Do not paste the brackets literally. A slash command is an operator action,
whereas names such as `local.read_file` are tools the model can request.

## Keep similarly named actions separate

`/clear` starts a new conversation without deleting old logs or undoing files.
`/commands off` prevents future model command tools but does not stop existing
ordinary background processes. `/fork` copies conversation history, not your
workspace. `/auto` opts into automatic review of eligible actions; it does not
approve every paid or sensitive operation. Follow each linked guide for the
action's scope and recovery behavior.
