Slash Commands Reference
Hermes has two slash-command surfaces, both driven by a central COMMAND_REGISTRY in hermes_cli/commands.py:
- Interactive CLI slash commands — dispatched by
cli.py, with autocomplete from the registry - Messaging slash commands — dispatched by
gateway/run.py, with help text and platform menus generated from the registry
Installed skills are also exposed as dynamic slash commands on both surfaces. That includes bundled skills like /plan, which opens plan mode and saves markdown plans under .hermes/plans/ relative to the active workspace/backend working directory.
Permissions and admin/user split
Every messaging platform that supports a per-user allowlist (Telegram, Discord, Slack, Matrix, Mattermost, Signal, …) also supports a two-tier slash command split: admins get every registered command, regular users only get the names you list in user_allowed_commands (plus the always-allowed floor /help and /whoami). Configure allow_admin_from and user_allowed_commands (and the per-group equivalents group_allow_admin_from / group_user_allowed_commands) inside the platform's extra: block in ~/.hermes/gateway-config.yaml.
See the per-platform docs for examples — the structure is identical across platforms:
If allow_admin_from is unset for a scope, that scope stays in unrestricted backward-compat mode — every allowed user can run every command.
Interactive CLI slash commands
Type / in the CLI to open the autocomplete menu. Built-in commands are case-insensitive.
Session
| Command | Description |
|---|---|
/new [name] (alias: /reset) | Start a new session (fresh session ID + history). Optional [name] sets the initial session title — e.g. /new my-experiment opens a fresh session already titled my-experiment so it's easy to find later with /resume or /sessions. Append now, --yes, or -y to skip the confirmation modal — e.g. /reset now, /new --yes my-experiment. |
/clear | Clear screen and start a new session |
/history | Show conversation history (respects /timestamps) |
/save | Save the current conversation |
/prompt (alias: /compose) | Compose your next prompt in $EDITOR (markdown) instead of the inline input — useful for long, multi-line, or carefully-formatted prompts. |
/retry | Retry the last message (resend to agent) |
/undo | Remove the last user/assistant exchange |
/title | Set a title for the current session (usage: /title My Session Name) |
/compress [here [N] | focus topic] | Manually compress conversation context (flush memories + summarize). /compress here [N] summarizes everything except the most recent N exchanges (default 2), kept verbatim — pick your own compression boundary. A focus topic narrows what a full summary preserves. |
/rollback | List or restore filesystem checkpoints (usage: /rollback [number]) |
/diff [staged|all|session] [--stat] [path...] | Show git changes in the working directory. Default: unstaged changes plus untracked files. staged shows what's staged for commit, all everything since HEAD, and session the cumulative diff of everything Hermes changed here (from the earliest retained checkpoint baseline — requires checkpoints to be enabled; complements /rollback diff <N>). --stat prints just the changed-file summary; path arguments restrict the diff. |
/snapshot [create|restore <id>|prune] (alias: /snap) | Create or restore state snapshots of Hermes config/state. create [label] saves a snapshot, restore <id> reverts to it, prune [N] removes old snapshots, or list all with no args. |
/stop | Kill all running background processes |
/queue <prompt> (alias: /q) | Queue a prompt for the next turn (doesn't interrupt the current agent response). |
/steer <prompt> | Inject a mid-run note that arrives at the agent after the next tool call — no interrupt, no new user turn. The text is appended to the last tool result's content once the current tool completes, giving the agent new context without breaking the current tool-calling loop. Use this to nudge direction mid-task (e.g. "focus on the auth module" while the agent is running tests). |
/goal <text> | Set a standing goal Hermes works toward across turns — our take on the Ralph loop. After each turn an auxiliary judge model decides whether the goal is done; if not, Hermes auto-continues. Subcommands: /goal status, /goal pause, /goal resume, /goal clear. Budget defaults to 20 turns (goals.max_turns); any real user message preempts the continuation loop, and state survives /resume. See Persistent Goals for the full walkthrough. |
/subgoal <text> | Append a user-supplied criterion to the active goal mid-loop. The continuation prompt surfaces all subgoals to the agent verbatim, and the judge factors them into its DONE/CONTINUE verdict — so the goal isn't marked done until the original goal and every subgoal are met. Subcommands: /subgoal (list), /subgoal remove <N>, /subgoal clear. Requires an active /goal. |
/heartbeat every <interval> <prompt> (alias: /hb) | Set a recurring prompt that re-enters this session as a normal user turn whenever it's idle and the interval has elapsed (min 60s; missed ticks coalesce). Subcommands: /heartbeat status, /heartbeat pause, /heartbeat resume, /heartbeat clear. Session-scoped and in-process — use hermes cron for durable isolated schedules. See Session Heartbeats. |
/refine [focus] | Run the background memory/skill self-improvement review now instead of waiting for the automatic post-turn trigger. Optional focus text steers the review (e.g. /refine save the deploy workflow as a skill). Runs in a background fork against a conversation snapshot — the live session and prompt cache are untouched; results are reported when done. |
/moa <prompt> | Run a single prompt through the default Mixture of Agents preset, then restore your current model. One-shot — does not change your session model. |
/resume [name] | Resume a previously-named session |
/sessions (TUI alias: /switch) | Classic CLI: browse and resume previous sessions in an interactive picker. TUI: open the live session switcher for currently open TUI sessions. Use /sessions new in the TUI to start another live session immediately. |
/egress [status] | Show Docker egress proxy status — enabled/configured/running state, credential source, token mappings, uncovered providers, and next remediation step. Works in CLI, TUI, Desktop chat, and messaging gateway. |
/redraw | Force a full UI repaint (recovers from terminal drift after tmux resize, mouse selection artifacts, etc.) |
/status | Show session info — model, provider, profile, session ID, working directory, title, created/updated timestamps, token totals, agent-running state — followed by a local Session recap block (recent user/assistant turn counts, tool result count, top tools used, last few files touched, the latest user prompt, and the latest assistant reply). The recap is computed locally from the in-memory conversation; no LLM call, no prompt-cache impact. |
/context [all] (alias: /ctx) | Visual context-window breakdown. On the CLI/TUI: a 5×20 glyph block grid (each cell ≈ 1% of the model window) plus an estimated per-category table — system prompt, tool definitions, rules, skills index, MCP, subagents, memory, conversation — versus free space. On messaging platforms: a usage gauge with auto-compression threshold/headroom, compression stats, cumulative throughput, and the same category table in plain text. /context all appends per-skill and per-toolset cost listings (index cost vs SKILL.md load cost; schema tokens per toolset). Read-only and computed locally — no LLM call, no prompt-cache impact. |
/agents (alias: /tasks) | Show active agents and running tasks across the current session. |
/background <prompt> (alias: /bg, /btw) | Run a prompt in a separate background session. The agent processes your prompt independently — your current session stays free for other work. Results appear as a panel when the task finishes. See CLI Background Sessions. |
/branch [name] (alias: /fork) | Branch the current session (explore a different path) |
/worktree [new [name]|list] | CLI only. Inspect or create isolated git worktrees mid-session (inspired by Copilot CLI's /worktree new). Bare /worktree shows the active worktree; /worktree list lists the repo's worktrees; /worktree new [name] creates a worktree under .worktrees/ (branched from the freshly-fetched remote tip, honoring worktree_sync) and retargets the session's terminal and file tools into it. Named trees use your name (hermes/<name> branch); unnamed ones get a random hermes-<id>. On exit the tree is kept only if it has unpushed commits — same lifecycle as hermes -w. See Git Worktrees. |
/handoff <platform> | CLI only. Hand the current session off to a messaging platform (Telegram, Discord, Slack, WhatsApp, Signal, Matrix). The gateway picks it up immediately, creates a fresh thread on platforms that support threads (Telegram topics, Discord text-channel threads, Slack message-anchored threads), re-binds the destination to your CLI session_id so the full role-aware transcript replays, and forges a synthetic user turn so the agent confirms it's working in the new place. Your CLI exits cleanly on success with a /resume hint; resume locally any time with /resume <title>. Refused mid-turn. Requires the gateway to be running and a home channel configured for the target platform (/sethome from the destination chat). See Cross-Platform Handoff. |
/journey [list|delete <id>|edit <id>] (aliases: /learning, /memory-graph) | Open the learning journey timeline of learned skills + memories. Works in the classic CLI, as a TUI overlay, and in the desktop app (Star Map panel). Not available on messaging platforms. See Learning Journey. |
Configuration
| Command | Description |
|---|---|
/config | Show current configuration |
/model [model-name] | Show or change the current model. Supports: /model claude-sonnet-4, /model provider:model (switch providers), /model custom:model (custom endpoint), /model custom:name:model (named custom provider), /model custom (auto-detect from endpoint), and user-defined aliases (/model fav, /model grok — see Custom model aliases). Flags: --global persists the change to config.yaml; --session forces session-only; --once applies to the next turn only; --refresh re-fetches the provider's model list; --provider <name> switches backend (session-only unless --global). A plain /model <name> is session-only unless model.persist_switch_by_default: true is set. Note: /model can only switch between already-configured providers. To add a new provider, exit the session and run hermes model from your terminal. Cost note: switching models mid-conversation resets the prompt cache — the cache key includes the model, so your next turn re-reads the entire conversation at full input price instead of the ~75%-discounted cached rate. Expected and unavoidable, but worth knowing on long sessions. |
/codex-runtime [auto|codex_app_server|on|off] | Toggle the optional Codex app-server runtime for OpenAI/Codex models. auto (default) uses Hermes' standard chat completions; codex_app_server hands turns to a codex app-server subprocess for native shell, apply_patch, ChatGPT subscription auth, and migrated Codex plugins. Effective on next session. |
/personality | Set a predefined personality. /personality none (or default / neutral) clears the overlay and returns to base behavior. |
/verbose | Cycle tool progress display: off → new → all → verbose. Can be enabled for messaging via config. |
/focus [on|off|status] | Toggle focus view — a display-only reduced-output mode showing just your prompt and the final response. Composes with /verbose: turning it on snaps tool progress to off and remembers your previous mode, and /focus off restores it. Each turn ends with a dim recovery line (⋯ 7 tool lines hidden · /focus off to show) and a persistent ◉ focus badge sits in the status bar so you always know you're in the reduced view. Nothing is sent differently to the model — detail is hidden, never discarded. |
/fast [normal|fast|status] | Toggle fast mode — OpenAI Priority Processing / Anthropic Fast Mode. Options: normal, fast, status. |
/reasoning [level|show|hide|full|clamp] [--global] | Manage reasoning effort and display. Levels include none / minimal / low / medium / high / xhigh / max / ultra. show / hide (or on / off) toggle reasoning display; full and clamp adjust how reasoning is shown. --global persists effort to config. |
/skin | Show or change the display skin/theme |
/export [profile] [-o out.tar.gz] | CLI only. Pack a profile into a shareable .tar.gz — skills, memory, persona, crons, plugins, settings, and (from the desktop) themes and layout. Credentials (auth.json, .env) are stripped. Defaults to the active profile and <name>.tar.gz in the current directory. Same archive as hermes profile export; for a versioned, updatable share use a profile distribution instead. |
/import <archive.tar.gz> [--name <name>] | CLI only. Install a profile archive as a new profile, inferring the name from the archive unless --name is given. Refuses to overwrite an existing profile and cannot import as default. Creates a shell wrapper when the name is free. See Export and import a profile file. |
/statusbar (alias: /sb) | Toggle the context/model status bar on or off |
/battery [on|off|status] | Toggle a color-coded battery read-out as the first status-bar element (off by default; no-op without a battery). |
/voice [on|off|tts|status] | Toggle CLI voice mode and spoken playback. Recording uses voice.record_key (default: Ctrl+B). |
/yolo | Toggle YOLO mode — skip all dangerous command approval prompts. |
/approvals [manual|smart|off] | Show or set the persistent dangerous-command approval mode. |
/footer [on|off|status] | Toggle the gateway runtime-metadata footer on final replies (shows model, context %, and cwd). |
/busy [queue|steer|interrupt|status] | CLI-only: control what pressing Enter does while Hermes is working — queue the new message, steer mid-turn, or interrupt immediately. |
/indicator [kaomoji|emoji|unicode|ascii] | CLI-only: pick the TUI busy-indicator style. |
/timestamps [on|off|status] | CLI-only: toggle [HH:MM] timestamps on messages and in /history. |
/wake [on|off|status] | CLI-only: toggle the "Hey Hermes" wake word listener. |
Tools & Skills
| Command | Description |
|---|---|
/tools [list|disable|enable] [name...] | Manage tools: list available tools, or disable/enable specific tools for the current session. Disabling a tool removes it from the agent's toolset and triggers a session reset. |
/toolsets | List available toolsets |
/browser [connect|disconnect|status] | Manage a local Chromium-family CDP connection. connect attaches browser tools to a running Chrome, Brave, Chromium, or Edge instance (default: http://127.0.0.1:9222). disconnect detaches. status shows current connection. Auto-launches a supported Chromium-family browser if no debugger is detected. |
/skills | Search, install, inspect, or manage skills from online registries. Also the review surface for the skill write-approval gate: /skills pending, /skills diff <id>, /skills approve <id>, /skills reject <id>, /skills approval on|off. See Gating agent skill writes. |
/memory [pending|approve|reject|approval] | Review pending memory writes staged by the write-approval gate (memory.write_approval) and toggle the gate. See Controlling memory writes. |
/bundles | List configured skill bundles — /<name> slash aliases that preload several skills at once. Configure under bundles: in ~/.hermes/config.yaml. See Skill Bundles. |
/learn <what to learn from> | Distill a reusable skill from anything you describe — a directory, a URL, the workflow you just walked the agent through, or pasted notes. Open-ended: the agent gathers the sources with its own tools and authors a SKILL.md following the house authoring standards. Works in the CLI, the messaging gateway, the TUI, and the dashboard Skills page. |
/init [notes] | Generate or update AGENTS.md project instructions from a repo scan (port of Codex /init). The agent inspects manifests, layout, and toolchain configs with its read-only tools, then writes a concise AGENTS.md — or, if one exists, merge-updates it preserving your content. Optional notes steer the emphasis. Works in the CLI, the messaging gateway, and the TUI. |
/cron | Manage scheduled tasks (list, add/create, edit, pause, resume, run, remove) |
/suggestions [accept|dismiss N|catalog|clear] (alias: /suggest) | Review suggested automations. Use /suggestions to list pending suggestions, /suggestions accept <id> to create the proposed automation, /suggestions dismiss <id> to reject one, /suggestions catalog to add curated starter automations, and /suggestions clear to clear resolved suggestion records. Accepted jobs preserve the current surface as the delivery origin. |
/blueprint [name] [slot=value ...] (alias: /bp) | Set up an automation from a blueprint template. Bare /blueprint lists the catalog; /blueprint <name> starts a guided slot-filling flow on the next agent turn; /blueprint <name> slot=value ... creates the job directly. |
/curator | Background skill maintenance — status, run, pin, archive. See Curator. |
/kanban <action> | Drive the multi-profile, multi-project collaboration board without leaving chat. Full hermes kanban surface is available: /kanban list, /kanban show t_abc, /kanban create "title" --assignee X, /kanban comment t_abc "text", /kanban unblock t_abc, /kanban dispatch, etc. Multi-board support included: /kanban boards list, /kanban boards create <slug>, /kanban boards switch <slug>, /kanban --board <slug> <action>. See Kanban slash command. |
/reload-mcp (alias: /reload_mcp) | Reload MCP servers from config.yaml |
/reload-skills (alias: /reload_skills) | Re-scan ~/.hermes/skills/ for newly installed or removed skills |
/reload | Reload .env variables into the running session (picks up new API keys without restarting) |
/plugins | List installed plugins and their status |
/pet [list|<slug>] | Toggle or adopt a petdex mascot. /pet toggles the pane, /pet list shows installed pets, /pet <slug> adopts a specific one. |
/hatch <description> (alias: /generate-pet) | Generate a brand-new petdex pet from a text description, using the configured image backend (OpenRouter / Nous Portal). See Pets. |
Info
| Command | Description |
|---|---|
/help | Show this help message |
/version | Show Hermes Agent version, build, and environment info. |
/whoami | Show your slash command access level (admin / user). |
/usage | Show token usage, cost breakdown, session duration, and — when available from the active provider — an Account limits section with remaining quota / credits / plan usage pulled live from the provider's API. |
/topup | Show your Nous balance and manage billing on the portal (replaces the old /credits and /billing commands). |
/subscription (alias: /upgrade) | CLI only. View your Nous plan and change it in the browser. |
/insights | Show usage insights and analytics (last 30 days) |
/update | Update Hermes Agent to the latest version. |
/platforms (alias: /gateway) | Show gateway/messaging platform status (CLI-only summary view). |
/paste | Attach a clipboard image |
/copy [number] | Copy the last assistant response to clipboard (or the Nth-from-last with a number). CLI-only. |
/image <path> | Attach a local image file for your next prompt. |
/debug | Upload debug report (system info + logs) and get shareable links. Also available in messaging. |
/update | Update Hermes Agent to the latest version. |
/profile | Show active profile name and home directory |
Exit
| Command | Description |
|---|---|
/quit | Exit the CLI (also: /exit). |
Dynamic CLI slash commands
| Command | Description |
|---|---|
/<skill-name> | Load any installed skill as an on-demand command. Example: /gif-search, /github-pr-workflow, /excalidraw. |
/skills ... | Search, browse, inspect, install, audit, publish, and configure skills from registries and the official optional-skills catalog. |
Quick Commands
User-defined quick commands map a short slash command to either a shell command or another slash command. Configure them in ~/.hermes/config.yaml:
quick_commands:
status:
type: exec
command: systemctl status hermes-agent
deploy:
type: exec
command: scripts/deploy.sh
inbox:
type: alias
target: /gmail unread
Then type /status, /deploy, or /inbox in the CLI or a messaging platform. Quick commands are resolved at dispatch time and may not appear in every built-in autocomplete/help table.
String-only prompt shortcuts are not supported as quick commands. Put longer reusable prompts in a skill, or use type: alias to point at an existing slash command.
Custom model aliases
Define your own short names for models you use often, then reach them with /model <alias> in the CLI or any messaging platform. Aliases work identically in both, on session-only (default) and --global switches.
Two config formats are supported:
Full form — pin an exact model, provider, and optionally a base URL. Put this in ~/.hermes/config.yaml:
model_aliases:
fav:
model: claude-sonnet-4.6
provider: anthropic
grok:
model: grok-4
provider: x-ai
ollama-qwen:
model: qwen3-coder:30b
provider: custom
base_url: http://localhost:11434/v1
Short form — provider/model in one string. Set from the shell without editing YAML:
hermes config set model.aliases.fav anthropic/claude-opus-4.6
hermes config set model.aliases.grok x-ai/grok-4
Then in chat: