Commands¶
Type / to open the command picker with fuzzy search.
Built-in Commands¶
| Command | Description |
|---|---|
/goal [objective|subcommand] |
Create, inspect, pause, resume, block, complete, or clear a persistent session goal |
/clear, /new |
Start a new conversation |
/rewind |
Rewind to a previous turn (same as Esc Esc) |
/resume |
Resume a saved session |
/session |
Show session, worktree, model, usage, and history metadata |
/compact [instructions] |
Summarize older history to free context |
/fork, /branch |
Fork the current session |
/export |
Export conversation; prompts for clipboard or file |
/copy [--role ROLE] [--headers] [N] |
Copy the newest matching conversation messages to the system clipboard |
/yank ... |
Alias for /copy |
/model [provider/model] |
Switch model (opens picker if no name given) |
/fast [on|off|toggle] |
Toggle accelerated inference when the active model supports it |
/theme [name] |
Preview a bundled UI and syntax theme for this session |
/color [name] |
Set session color |
/stats |
Show token usage statistics |
/usage, /cost |
Show session cost and active-provider usage limits |
/thinking [mode] |
Set thinking block presentation: open, close, peek, toggle |
/reasoning [level] |
Set or show reasoning effort: off, low, medium, high, max |
/permissions |
Manage saved permissions |
/ps |
Manage background processes |
/notify [once|on|off|clear|status] |
Override turn-end terminal notifications for this session |
/history |
Fuzzy-search prompt history (also Ctrl+R) |
/nohl |
Clear active search highlights |
/messages |
Show recorded errors, warnings, and notices |
/skills |
Show loaded skills and their source locations |
/mcp |
Show MCP servers, lifecycle state, and tool names |
/worktree [name] [--base ref] |
Pick, create, or enter a managed git worktree |
/wt [name] [-b ref] |
Alias for /worktree |
/help |
Show keybindings (also F1) |
/docs |
Open the smelt documentation in your browser |
/inspect |
Open the local session/request inspector when the opt-in plugin is enabled |
/btw <question> |
Ask a side question; answer streams into a dialog |
/brief [scope] [focus] |
Summarize planned or completed changes compactly |
/handoff [focus] |
Write a continuation handoff for another agent |
/reflect [focus] |
Step back and rethink recent changes before moving on |
/simplify [focus] |
Review changed code for reuse, quality, and efficiency |
/trust |
Trust the current project's .smelt/ content |
/reload |
Re-evaluate user Lua (init + plugins) without restarting (also F5) |
/version |
Show the running build identity as a notification |
/changelog |
Open the release notes for the latest cached build |
/upgrade [check] |
Install the newest smelt build (or refresh the cache with check) |
/exit, /quit |
Exit (also :q, :qa, :wq, :wqa) |
Goals and auto-continue¶
/goal <objective> creates an auto-continuing goal and immediately asks the
agent to pursue it. /goal set <objective> is equivalent. An unfinished goal
must be completed or cleared before another can be created.
| Form | Effect |
|---|---|
/goal or /goal status |
Show objective, state, progress, id, and auto-continue state |
/goal progress <label> |
Set the durable progress label shown in the goal bar |
/goal summary <label> |
Set a shorter stable goal-bar summary |
/goal pause |
Pause the goal and disable its auto-continue |
/goal resume |
Reactivate the goal, enable auto-continue, and schedule continuation |
/goal block [reason] |
Mark the goal blocked and disable auto-continue |
/goal done |
Mark the goal complete and disable auto-continue |
/goal clear |
Remove the goal from the session |
/goal auto on, /goal auto off |
Enable or disable auto-continue; this also activates or pauses the goal |
Auto-continue runs only while idle. Queued user messages run first. By default,
smelt.settings.auto_continue = "goal", so only active auto goals continue; if
the same goal remains active afterward, auto-continue resumes. When a provider
returns a quota or rate-limit reset time, an eligible auto-continue schedules its
next continue after that reset. Set smelt.settings.auto_continue = "off" to
disable idle continuation, or "always" to continue any idle session even when
no goal is active.
Conversation copy¶
/copy copies the latest non-empty conversation message. Pass N to copy the
latest N messages in chronological order, or filter first with --role user or
--role assistant (-r also works). Multiple messages include User: and
Assistant: headers automatically; --headers also adds a header to a single
message. /yank accepts the same arguments.
Managed worktrees¶
Run /worktree with no arguments to pick an existing worktree, start creating
one, or view worktree status. /worktree <name> [--base <ref>] creates or enters
a managed worktree; /wt <name> [-b <ref>] is the short form. Entering a
worktree switches smelt's real process working directory and reloads project
context. See Managed worktrees.
Fast mode and notifications¶
/fast toggles accelerated provider inference for the current session. Explicit
on, off, and toggle forms are available. The command reports an error
rather than silently changing state when the active model does not advertise
fast-mode support.
/notify defaults to once, which notifies after the next completed turn.
on enables notifications for this session, off disables them for this
session, clear removes the session override, and status reports the effective
mode. Persistent defaults live in smelt.settings.notifications.turn_end.
The /inspect command comes from the opt-in smelt.plugins.inspect plugin. Add
require("smelt.plugins.inspect") to init.lua to register it.
Shell Escape¶
Prefix with ! to run a shell command directly, without going through the
agent. Output appears inline in the conversation. Shell escapes are useful for
quick checks, such as verifying test output or reading a config value, without
bloating the agent's context window with a full tool call.
Shell escapes also work while the agent is running.
Custom Commands¶
Create .md files in ~/.config/smelt/commands/ and they become prompt-template
slash commands. Their filename is the command name, and their body is sent to the
agent after template expansion. See the
Customization guide for an example.
For commands implemented as Lua handlers instead of agent prompts, put a module
under ~/.config/smelt/plugins/ and call smelt.cmd.register(...). Lua handlers
can open UI, mutate runtime state, and invoke other commands; markdown commands
are better for reusable model instructions.
Frontmatter¶
All fields are optional:
| Key | Description |
|---|---|
description |
Shown in the / picker |
model |
Override model for this command. Prefer provider_name/model_name; bare names work only when unambiguous |
provider |
Provider name used to resolve a bare model reference |
temperature |
Sampling temperature |
top_p |
Top-p (nucleus) sampling |
top_k |
Top-k sampling |
min_p |
Min-p sampling |
repeat_penalty |
Repetition penalty |
reasoning_effort |
Thinking depth: off/low/medium/high/max |
agent_skill |
When true, expose this command as a loadable skill |
tools |
allow/ask/deny lists for tool permissions |
bash |
allow/ask/deny glob patterns for bash |
web_fetch |
allow/ask/deny glob patterns for URLs |
Shell Execution in Templates¶
- Inline:
!`command`, output replaces the backtick expression - Fenced:
```!code block, output replaces the block - Escape:
\!`command`, prevents execution