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 decides. 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, so there is nothing to look up and nothing to get in the wrong order. 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 to state, and each used to spell part of it with dashes:

/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 actually named project. Where meaning is taken from a word’s shape instead, the sets provably 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 rather than ignored, because a word that is silently dropped looks like a setting that was applied.

A spelling that was an option

Each of these commands remembers the option spellings it used to have, and rejects them, stating 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, because the operator who types the word an older grammar taught is asking the same question either way and wants the same answer. Which words those are is read from the same table the refusal text comes from, so the two spellings cannot drift apart.

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

/mcp smithery-search is the exception, and it is one on purpose: 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 exactly what typing that subcommand runs.

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 (no role cycle; roles 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 sees. 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 subagent 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.