---
title: "Keyboard"
description: "The keys that steer a running turn, answer an approval, and reach the menu."
source: https://shoal.grimvane.ai/docs/reference/keyboard/
---

# Keyboard

## Keys

> **For the terminal.**
>
> Type `/shortcuts` to print this where you are working.
>
> | Key | What it does |
> | --- | --- |
> | `↑ / ↓` | cycle through input history |
> | `Enter` | send, or steer a running turn |
> | `ESC` | interrupt a running turn |
> | `y / a / n` | answer a permission prompt |
> | `Ctrl+C` | quit shoal (when idle) |
> | `Ctrl+D` | quit shoal (empty input) |

> **For the VS Code extension.**
>
> The composer takes these. `/shortcuts` prints the same list in the panel.
>
> | Key | What it does |
> | --- | --- |
> | `Enter` | send, or run the typed command |
> | `Shift + Enter` | newline |
> | `/` | open the command menu from an empty box |
> | `Esc` | close the menu, or interrupt the turn |
> | `Alt + G` | snap to the safety mode |
> | `Alt + N` | /clear, start a fresh session |
> | `Alt + R` | /sessions, list sessions you can resume |
> | `Esc` | /interrupt, stop the running turn |
> | `Alt + K` | /compact, compact history now |
> | `Alt + X` | /context, token accounting so far |
> | `Alt + C` | /crows-nest, review code read-only and report findings |
> | `Alt + M` | /moor, swap the mooring, or open the mooring form |
> | `Alt + B` | /mode, set the headspace Shoal works in |
> | `Alt + J` | /hail, put the next prompt in front of the running turn |
> | `Alt + U` | /queue, hold the next prompt until this turn finishes |
> | `Alt + A` | /attach, attach a file to the next prompt |
> | `Alt + ,` | /settings, open settings |
> | `Alt + Y` | /subagents, what has been delegated, and where children run |
> | `/` | /help, list every command |
> | `Alt + /` | /shortcuts, keyboard shortcuts |
> | `Alt + S` | /status, model, session, and mode |

> **For the desktop app.**
>
> The composer takes these. `/shortcuts` prints the same list in the panel.
>
> | Key | What it does |
> | --- | --- |
> | `Enter` | send, or run the typed command |
> | `Shift + Enter` | newline |
> | `/` | open the command menu from an empty box |
> | `Esc` | close the menu, or interrupt the turn |
> | `Alt + G` | snap to the safety mode |
> | `Alt + N` | /clear, start a fresh session |
> | `Alt + R` | /sessions, list sessions you can resume |
> | `Esc` | /interrupt, stop the running turn |
> | `Alt + K` | /compact, compact history now |
> | `Alt + X` | /context, token accounting so far |
> | `Alt + C` | /crows-nest, review code read-only and report findings |
> | `Alt + M` | /moor, swap the mooring, or open the mooring form |
> | `Alt + B` | /mode, set the headspace Shoal works in |
> | `Alt + J` | /hail, put the next prompt in front of the running turn |
> | `Alt + U` | /queue, hold the next prompt until this turn finishes |
> | `Alt + A` | /attach, attach a file to the next prompt |
> | `Alt + ,` | /settings, open settings |
> | `Alt + Y` | /subagents, what has been delegated, and where children run |
> | `/` | /help, list every command |
> | `Alt + /` | /shortcuts, keyboard shortcuts |
> | `Alt + S` | /status, model, session, and mode |

> **For the VS Code extension.**
>
> The editor binds the panel itself as well. These come from the extension's manifest at version 0.32.0.
>
> | Key | Command | What it does |
> | --- | --- | --- |
> | `ctrl+alt+s` or `cmd+alt+s` on macOS | `shoal.open` | Shoal: Open |
> | command palette | `shoal.askSelection` | Shoal: Ask About Selection |

## Answering an approval

> **For the terminal.**
>
> When Shoal asks before a write or a shell command, `y` approves this one, `a` approves this kind for the rest of the session, and `n` refuses. A refusal is a fact the model is told about rather than an error, so it can try something else.

> **For the VS Code extension.**
>
> An approval arrives as a card in the transcript carrying the diff Shoal computed, and you answer it there. Approving a kind of call for the rest of the session is one of the answers on the card. A refusal is a fact the model is told about rather than an error, so it can try something else.

> **For the desktop app.**
>
> An approval arrives as a card in the transcript carrying the diff Shoal computed, and you answer it there. Approving a kind of call for the rest of the session is one of the answers on the card. A refusal is a fact the model is told about rather than an error, so it can try something else.

This reference matches Shoal 0.32.0.
