Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Slash commands

Slash commands run inside an interactive Veyyon session. Type / in the composer to open the picker. Commands below are the builtin set; extensions may add more.

A command nothing can handle is rejected, not sent to the model. If you mistype a name, or type a command your installed build does not have, you get:

Unknown command "/secrt". Nothing handled it, so it was not sent to the model. Type / to see the
commands this build has, or drop the leading slash to send it as a message.

The refusal states the command and never repeats what followed it, because the tail of a mistyped /secret is a credential. The rule reaches further than one mistyped word: in a terminal the whole argument line of /secret is the credential, whatever it happens to spell, so there is no tail there that is safe to echo back.

A message that merely begins with a filesystem path is prose, not a command, and is sent as usual:

/etc/hosts is broken

The separator selects the reading. A command name is one segment of letters, digits, underscores and hyphens starting with a letter, so anything holding a slash is a path.

Every argument is a plain word

No slash command takes an option. Nothing is spelled with a dash. A word means something for one of two reasons: the POSITION it sits in, or a CLOSED SET or SHAPE it belongs to.

Plenty of commands take a single argument, listed with them in the tables below. These are the ones with a grammar:

/mcp add <name> [http|sse] [url <url>] [token <token>] [run <command...>]
/mcp remove <name>
/mcp smithery-search <keyword...> [<limit 1-100>] [semantic]
/ssh add <name> <host> [user <user>] [<port>] [key <keyPath>]
/ssh remove <name>
/stats [<port>]

/secret has its own grammar and its own page: see Secrets.

Position covers every required word, so /mcp remove project removes a server named project. Where meaning is taken from a word’s shape instead, the sets cannot overlap: on /ssh add a port is digits and nothing else the command reads is, and user and key are the only two keywords, each taking the word after it. A word the command cannot use is rejected, not ignored.

A spelling that was an option

Each of these commands rejects its former option spellings and states the plain word that replaced each one:

/ssh add box example.com --port 2222
--port is gone: write the port as a plain integer.
Usage: /ssh add <name> <host> [user <user>] [<port>] [key <keyPath>]

The plain word gets the same answer as the dashed one. /stats port 8080 is rejected the way /stats --port 8080 is, and /mcp add srv project the way /mcp add srv --scope project is. The set of those words is read from the same table as the rejection text, so the two spellings cannot drift apart.

A word that never was an option is rejected more briefly, since there is no replacement to state: Unknown argument: <word>, or Invalid port: <word> where a port was the only thing the command reads.

/mcp smithery-search is the exception: its trailing words are search terms, arbitrary text with no closed set, so a plain project there is a keyword to search for and is searched for. Only the dashed spellings are rejected.

A bare command that has subcommands

Some commands take a subcommand: /account status, /account manager, /usage reset. Typing the command on its own opens a picker listing every subcommand it has, with what each one does. Move with the up and down arrows, click a row, press enter to run it, or press escape to close and run nothing. Choosing a row runs the same command as typing that subcommand. When the list is longer than the picker, type to filter it; escape clears the filter before it closes the picker. The picker widens to show every usage and description whole; on a terminal too narrow for that, the usage column narrows first and a usage that still does not fit is cut after a whole word.

A subcommand that takes an argument, such as /account name <text>, does not run straight away. The picker writes /account name into the composer and leaves the cursor after it, so you type the argument and press enter.

Outside a terminal, in ACP and --print mode, there is no picker to open. A bare command prints the same list instead.

A few commands mean something on their own rather than standing for a subcommand, and those still act on a bare invocation: /yolo, /fast, and /browser flip a switch, /goal enters goal mode, /todo shows the list, /secret opens the masked value field, /setup opens the wizard, /plugins lists plugins, and /compact compacts.

Session and navigation

CommandPurpose
/new, /freshNew session (fresh may reset provider stream state)
/resumeResume another saved session
/fork, /branch, /treeBranching and session tree UI
/rename <title>Rename session
/move <dir>Relocate the session (including its saved session file) to another working directory and re-root path-scoped settings, secrets, capabilities, and the system-prompt project framing there
/cwd [path]Bare prints the current session cwd; with a path, re-roots the live session at that directory after validating it exists. Reloads the same cwd-scoped state as /move (path-scoped settings, secrets, capabilities, the ssh tool, system-prompt framing) but does not relocate the session file. Session-scoped only; does not write profile session.workdir
/export [path]Export the session as a standalone HTML file
/dumpDump debug artifacts
/session info, /session deleteSession metadata or delete
/profile [name], /profilesBare opens the profile picker (switch, rename, create, delete); /profile <name> switches (relaunches as a fresh session); /profile new <name> opens the copy picker; /profile <name> rename to <new> sets a display name; /profile rm <name> deletes after a confirmation
/welcomeShow the full welcome screen (actions, recent sessions)
/exit, /quit, /pauseLeave or pause

Model, modes, and behavior

CommandPurpose
/model [id], /modelsSelect the interactive model only (helper models live in settings)
/switchTry a model for this session only, without saving it as default (same as alt+p)
/fast on|off|statusFast mode
/effort [level] (/thinking)Set reasoning effort; no argument opens the picker
/cpu-limit [status|lift|reset] (/cpu)Report the machine and session resource limits and what is enforcing them, or lift this session’s CPU cap. Sets nothing: limits are configured in /settings under Resources
/permissions [rung] (/approval)Set how much the agent does unasked, for this session only: ask, ask-command, auto, yolo, or plan. /permissions status reports the rung in force and where it came from; reset drops the session override and returns to the saved default from Settings. A bare /permissions opens the picker
/yolo on|off|statusRemove this session’s permission prompts (a blatantly destructive command, an explicit deny, and plan mode still block; needs confirmation)
/planToggle plan mode
/plan-reviewRe-open plan review
/goal …Goal set/show/pause/resume/drop/budget
/guided-goalGuided goal wizard
/loopLoop mode controls
/prewalk [model]Arm the prewalk switch for this session: the agent moves to the cheap model at its next edit or write, once the todo list exists. The target comes from the argument or prewalk.cheapModel; with neither, the command fails naming the setting
/secretStore a credential the agent uses by placeholder and never receives. A command comes first on every surface and every argument after it is a plain word: /secret add <value> stores it in a terminal, /secret add alone opens a hidden field, /secret from-env <VAR> reads it out of the environment, and the name is prompted afterwards, with Enter accepting the generated one. The commands are add, from-env, list, rm, clear, rename, value, scope, copy, extend, log, discard, help; a first word that is none of them is rejected and nothing is stored. See Secrets
/settings, /setupSettings UI; /setup opens first-run provider sign-in
/providers, /account managerOpen the account manager: every stored account per provider, with its email, plan, health, and usage. See Authentication
/account statusShow which account each provider is serving this session with. A bare /account opens the picker
/account name <text>Name the account this session is using, so rows read work instead of an email
/account switch <provider>Open the manager focused on one provider, to move that provider to another of your accounts
/statuslineSettings UI, jumped to Status Line (preset/segments/separator)
/reload-pluginsReload extensions
/trustDecide whether this project’s code may run; approve, deny, forget, or a path (Project trust)
/force <tool> [prompt] (/force:)Force the next turn to use a specific tool

Tools, context, and jobs

CommandPurpose
/compact [summary] [focus]Summarize older context in place; optional focus string
/shake elide|imagesShake tool-result bulk. A bare /shake opens the picker
/handoff [focus]Explicitly transfer context into a new session
/contextContext usage report
/toolsTools visible to the model
/jobsBackground async jobs
/todo …Todo list CRUD
/browser …Browser tool mode
/memory …Memory backend view/stats/clear/enqueue
/copyPick text or code from the conversation to copy
/rephraseAsk for the last reply again, in plainer prose. Needs a finished reply to work from
/lspShow language server status

Auth and usage

CommandPurpose
/login [provider|url]OAuth / API key login
/logout [provider]Log out
/usage show|resetProvider rate limits
/stats [<port>]Open the usage dashboard in a browser. The port is a plain integer and defaults to 3847; veyyon stats opens the same dashboard from a shell
/changelogOpen the release notes on the web

Extensions

CommandPurpose
/mcp …MCP server management
/mcp notificationsShow notification capabilities and subscriptions
/plugins …Plugin browser
/extensions, /statusExtension Control Center dashboard. /status is an alias for it, not a session-status view
/agents (aliases /cockpit, /hub)Open the agent dashboard: live agent roster and the agent-to-agent comms stream
/ssh …SSH host setup. add takes the name and host by position, then user <user>, a plain port, and key <keyPath> in any order: see Every argument is a plain word
/hotkeysActive keybinding chords
/collab …, /join, /leaveLive collab sessions
/shareShare the session via an encrypted link (share server or secret gist)

Side agents and misc

CommandPurpose
/btwEphemeral side question
/tanRun a full background agent on tangential work
/advisor …Show, configure, start or stop the advisor that reviews each turn
/omfgForge a TTSR rule from a complaint to stop a recurring behavior
/vibeToggle vibe mode (director + vibe_* worker tools)
/retryRetry failed turn
/debugDebug overlays
/queueQueue follow-up message
/dropDelete the current session and start a new one (dequeuing a queued message is the alt+up chord, not a slash command)

Every subcommand

The tables above write … where a command takes a subcommand. This is the full set, so a name is findable without opening the picker. What each one does is on the picker row and in that feature’s own page; typing the bare command lists them with their descriptions.

CommandSubcommands
/setupproviders
/accountstatus, manager, switch, use, name, refresh, usage, login, logout
/goalset, show, pause, resume, drop
/faston, off, status
/permissionsstatus, ask, ask-command, auto, yolo, plan, reset
/yoloon, off, status
/cpu-limitstatus, lift, reset
/secretadd, from-env, list, rm, clear, rename, value, scope, copy, extend, log, discard, help
/collabstart, view, status, stop
/browserheadless, visible
/todoedit, copy, export, import, append, start, done, drop, rm
/sessioninfo, delete
/usageshow, reset
/mcpadd, list, remove, test, reauth, unauth, enable, disable, smithery-search, smithery-login, smithery-logout, reconnect, reload, resources, prompts, notifications, help
/sshadd, list, remove, help
/compactsummary
/shakeelide, images
/memoryview, stats, diagnose, clear, reset, enqueue, rebuild, mm list, mm show, mm refresh, mm history, mm seed, mm delete, mm reload
/pluginslist
/trustapprove, deny, forget
/advisorstatus, configure, on, off, dump

Extension packages (for example swarm) register additional commands when installed. The live set is whatever the session registers; use /help or the command palette in the TUI. Status line: /statusline opens the Status Line settings group (see Multi-agent monitoring). Keybindings: /hotkeys. Memory: /memory and settings under the active memory backend.