The prompt
You type in one place. The first characters decide what runs. The accent caret follows the insertion point as you edit the line.
flowchart LR
line["The line you type"]:::step
shell["Shell"]:::out
endpoint["@endpoint"]:::step
tool["@tool"]:::store
skill["/ skill"]:::gate
model{"@chat # @agent"}:::gate
line --> shell
line --> endpoint
line --> tool
line --> skill
line --> model
classDef store fill:#134e4a,stroke:#5eead4,stroke-width:2px,color:#f4fbfa
classDef gate fill:#FFC131,stroke:#b45309,stroke-width:2px,color:#1a1404
classDef step fill:#0f766e,stroke:#99f6e4,stroke-width:2px,color:#f4fbfa
classDef out fill:#155e75,stroke:#67e8f9,stroke-width:2px,color:#f4fbfa
linkStyle 0,2 stroke:#5eead4,stroke-width:2.5px
linkStyle 1 stroke:#67e8f9,stroke-width:2.5px
linkStyle 3,4 stroke:#FFC131,stroke-width:2.5px
| You type | What runs |
|---|---|
git status | The tab’s shell. Output streams in. cd and export carry to the next line on bash, zsh, sh, and PowerShell |
@endpoint List users | A saved HTTP call |
@tool search --query tea | An MCP tool on a server connected to this tab |
/explain how to make tea | A skill from skills.yaml |
@chat why was that empty? | The tab’s model, with recent scrollback. It can call this tab’s MCP tools and saved endpoints; you approve each call |
Agent on, then why was that empty? | The same chat, without typing @chat. A line that starts with @ still runs |
# find files over 100 MB here | The model writes one command into the prompt. You press Enter |
@history | The history overlay for this tab |
@ opens the commands palette. / opens the skills palette. Both filter as you type. In the commands palette, exact and leading name matches appear before other name matches, and all name matches appear before description matches. Built-in @ actions are listed in Commands. Entries from commands.yaml follow them. @history is always first and is not a YAML entry.
Agent, to the left of ❯, sends a line as chat when it is on. It needs this tab’s OpenAI connection. A line that starts with @ still runs. While Agent is on, / does not open the skills palette: that line is the question. Ask the model describes the system prompt.
What the scrollback shows
Each command is its own entry, with a short accent mark on the left.
The far right names the call:
| Pill | Meaning |
|---|---|
| cmd | A line you typed |
| script | A shell skill, or a command from commands.yaml |
| tool | An MCP tool |
| endpoint | A saved HTTP call |
| skill | A prompt skill |
| ai | A model interpretation of a tool result |
An endpoint, a tool, and a model call show how long they took beside the pill. A prompt skill times the model call. A tool that is then interpreted shows the tool time on tool and the model time on ai.
An HTTP response puts a status pill on the call’s line. 2xx is green, 3xx is blue, 4xx is orange, and 5xx is red. The phrase sits in the pill (200 OK, 404 Not found). The body follows on the next line. A connection test uses the same pill.
A tool result and an endpoint body have a magnifying glass and a copy icon. Search a response covers that search.
When the scrollback is above the latest line, Bottom sits at the lower right and jumps to the end.
Clear, cancel, and copy
Ctrl+L on Windows and Linux, or Cmd+L on macOS, clears the scrollback.
Ctrl+C copies the selection when text is selected, in the prompt or the scrollback. With nothing selected it cancels a running command and the process group it started, or a stream, a sign-in, or an MCP tool call. The server receives notifications/cancelled. When the line is idle, the same key clears the input.
Cmd+C on macOS copies the selection. In the interactive terminal, Ctrl+Shift+C copies and Ctrl+Shift+V pastes, because Ctrl+C belongs to the program.
Ctrl+0 resets the output font to 14px. Ctrl and the wheel changes it between 10px and 24px. The size is stored in settings and does not zoom the window.
Skills and commands files
skills.yaml and commands.yaml ship with the app. While you develop, the app also finds the copies at the repo root. Edit the file and restart.
A skill with prompt runs once against the OpenAI connection selected on this tab. The skill prompt is appended to that connection’s system prompt. The answer is Markdown. Text already on the line before / is the subject. /explain with no subject stays armed on the status strip: the next line is the subject, and Enter on an empty line uses the last command output. Esc cancels an armed skill. With no OpenAI connection selected, nothing is sent.
A skill or command with command, command_unix, or command_windows runs in the shell at once. The OS-specific field wins on that platform.
skills:
- id: explain
name: Explain
description: Explain a command or snippet
prompt: "Explain the following in plain English:"
- id: git-status
name: Git status
description: Run git status
command: "git status"commands:
- id: git-status
name: Git status
description: Show the working tree status
command: "git status"